Sie können tatsächlich mit pyOpenSSL gehen. Wie Sie sagen, haben Sie bereits CA-Root-Zertifikat und einen privaten Schlüssel, und CSR wird von einem Client gesendet, dann können Sie Funktionen von Crypto verwenden, um all diese zu lesen (CA-Zertifikat, privater Schlüssel und Device CSR) sie im Puffer.
Verwenden Sie die folgenden Funktionen, um mit zu beginnen. Prüfen dir(crypto) and crypto.function_name.__doc__
auf Python-Interpreter für weitere Informationen :) müssen Sie Krypto importieren aus pyOpenSSL
- crypto.load_certificate_request() - Gerät CSR obj
- crypto.load_privatekey() zu bekommen - privaten Schlüssel obj für CA erhalten privaten Schlüssel
- crypto.load_certificate() - CA root-Zertifikat
zu bekommen, dann können Sie einfach funcation schreiben Zertifikat zurück
def create_cert():
cert = crypto.X509()
cert.set_serial_number(serial_no)
cert.gmtime_adj_notBefore(notBeforeVal)
cert.gmtime_adj_notAfter(notAfterVal)
cert.set_issuer(caCert.get_subject())
cert.set_subject(deviceCsr.get_subject())
cert.set_pubkey(deviceCsr.get_pubkey())
cert.sign(CAprivatekey, digest)
return cert
wo cacert, deviceCsr und CAprivatekey sind Werte von den oben genannten drei funcations. Jetzt, da Sie ein Zertifikat für sich haben, können Sie dieses in eine Datei schreiben, indem Sie crypto.dump_certificate(crypto.FILETYPE_PEM, cert)
mit dem Dateinamen Ihrer Wahl verwenden.
Sie können diese Funktion gemäß Ihrer Anforderung ändern. Danach können Sie das generierte Gerätezertifikat mit dem CA-Root-Zertifikat mit dem openssl-Befehl überprüfen, z. openssl verify -CApath <CA cert path> <name of device cert file>
Sie können auch einige Beispiele von github durchgehen. M2Crypto Example, pyOpenSSL example
Hoffnung, das gibt Ihnen Idee über die Umsetzung