예제 #1
0
    def commande_restaurer_backup_cle(self):
        with open ('/home/mathieu/mgdev/certs/pki.connecteur.key', 'rb') as fichier:
            key_bytes = fichier.read()

        clecert = EnveloppeCleCert()
        clecert.key_from_pem_bytes(key_bytes, None)
        clecert.password = self.mot_de_passe.encode('utf-8')
        key_chiffree_bytes = clecert.private_key_bytes

        self.cert_maitredescles_recu.wait(5)
        mot_de_passe_chiffre, fingerprint = self.certificat_maitredescles.chiffrage_asymmetrique(self.mot_de_passe.encode('utf-8'))

        enveloppe = EnveloppeCleCert()
        enveloppe.key_from_pem_bytes(key_bytes, None)

        requete_cle_racine = {
            'cle_privee': key_chiffree_bytes.decode('utf-8'),
            'mot_de_passe_chiffre': str(b64encode(mot_de_passe_chiffre), 'utf-8'),
            # 'fingerprint_base64': 'Ut/UQ5aKomoGzXB7mpUduPk4Xzg=',
        }
        enveloppe_requete = self.generateur.transmettre_commande(
            requete_cle_racine,
            'commande.millegrilles.domaines.MaitreDesCles.%s' % ConstantesMaitreDesCles.COMMANDE_RESTAURER_BACKUP_CLES,
            correlation_id='abcd-1234',
            reply_to=self.queue_name
        )

        print("Envoi requete: %s" % enveloppe_requete)
        return enveloppe_requete
    def charger_cle_cert(self):
        clecert = EnveloppeCleCert()

        with open(
                '%s/%s.key.pem' %
            (self.folder_output,
             ConstantesGenerateurCertificat.ROLE_DEPLOYEUR), 'rb') as fichier:
            key_bytes = fichier.read()
            clecert.key_from_pem_bytes(key_bytes)

        with open(
                '%s/%s.cert.pem' %
            (self.folder_output,
             ConstantesGenerateurCertificat.ROLE_DEPLOYEUR), 'rb') as fichier:
            cert_bytes = fichier.read()
            clecert.cert_from_pem_bytes(cert_bytes)

        # Verifier que les cles correspondent
        corresp = clecert.cle_correspondent()
        print("Cle et cert deployeur correspondent: %s" % corresp)

        with open(
                '%s/%s.cert.pem' %
            (self.folder_output, ConstantesGenerateurCertificat.ROLE_MQ),
                'rb') as fichier:
            cert_bytes = fichier.read()
            clecert.cert_from_pem_bytes(cert_bytes)

        # Verifier que les cles ne correspondent pas
        corresp = clecert.cle_correspondent()
        print("Cle deployeur et cert mq correspondent: %s" % corresp)
def dechiffrer_backup(path_catalogue):
    with lzma.open(path_catalogue, 'rb') as fichier:
        catalogue = json.load(fichier)

    path_archives = path.dirname(path_catalogue)
    path_transactions = path.abspath(
        path.join(path_archives, '..', 'transactions'))

    nom_transaction = catalogue['transactions_nomfichier']
    path_fichier_transactions = path.join(path_transactions, nom_transaction)
    path_output = path_fichier_transactions.replace('.mgs1', '')

    iv = catalogue['iv']
    password = catalogue['cle']

    # Dechiffrer cle secrete avec cle de millegrille
    with open('/home/mathieu/mgdev/cle_mg/cle.pem', 'r') as fichier:
        private_key = fichier.read()
    with open('/home/mathieu/mgdev/cle_mg/password.txt', 'r') as fichier:
        pwd_cle_privee = fichier.read()
    pwd_cle_privee = pwd_cle_privee.strip().encode('utf-8')

    clecert_millegrille = EnveloppeCleCert()
    clecert_millegrille.key_from_pem_bytes(private_key.encode('utf-8'),
                                           pwd_cle_privee)

    test_fichier = TestFichier()

    test_fichier.dechiffrer_asymmetrique(path_fichier_transactions,
                                         path_output, iv, password,
                                         clecert_millegrille)
    def charger_certificats(self):
        secret_path = path.abspath(self.secret_path)

        # Charger mots de passes middleware
        with open(
                path.join(secret_path,
                          ConstantesServiceMonitor.FICHIER_MONGO_MOTDEPASSE),
                'r') as fichiers:
            self._passwd_mongo = fichiers.read()
        with open(
                path.join(secret_path,
                          ConstantesServiceMonitor.FICHIER_MQ_MOTDEPASSE),
                'r') as fichiers:
            self._passwd_mq = fichiers.read()

        # Charger information certificat monitor
        clecert_monitor = EnveloppeCleCert()
        with open(path.join(secret_path, 'pki.monitor_dependant.key.pem'),
                  'rb') as fichiers:
            key_pem = fichiers.read()
        try:
            cert_pem = self._charger_certificat_docker(
                'pki.monitor_dependant.cert')
            clecert_monitor.from_pem_bytes(key_pem, cert_pem)

            # Conserver reference au cert monitor
            self.certificats[
                GestionnaireCertificats.MONITOR_CERT_PATH] = self.certificats[
                    'pki.monitor_dependant.cert']
            self.certificats[
                GestionnaireCertificats.
                MONITOR_KEY_FILE] = 'pki.monitor_dependant.key.pem'

        except AttributeError:
            self.__logger.info(
                "Certificat monitor_dependant non trouve, on va l'attendre")
            clecert_monitor.key_from_pem_bytes(key_pem)

        self.clecert_monitor = clecert_monitor

        # Charger le certificat de millegrille, chaine pour intermediaire
        self._charger_certificat_docker('pki.millegrille.cert')
예제 #5
0
    def commande_signer_cle_backup(self):
        with open ('/home/mathieu/mgdev/certs/pki.connecteur.key', 'rb') as fichier:
            key_bytes = fichier.read()

        enveloppe = EnveloppeCleCert()
        enveloppe.key_from_pem_bytes(key_bytes, None)
        public_bytes = enveloppe.public_bytes

        requete_cle_racine = {
            'cle_publique': public_bytes.decode('utf-8'),
        }
        enveloppe_requete = self.generateur.transmettre_commande(
            requete_cle_racine,
            'commande.millegrilles.domaines.MaitreDesCles.%s' % ConstantesMaitreDesCles.COMMANDE_SIGNER_CLE_BACKUP,
            correlation_id='abcd-1234',
            reply_to=self.queue_name
        )

        print("Envoi requete: %s" % enveloppe_requete)
        return enveloppe_requete