Ich habe eine PKCS7-Nachricht, die signiert ist. Es enthält ein Daten- und ein Signaturzertifikat (mit der gesamten Vertrauenskette).PKCS7-Unterzeichnerkette in Python erhalten
Ich habe einen Code, der m2crypto verwendet, um ein Zertifikat daraus zu erhalten.
bio = BIO.MemoryBuffer(pkcs7message)
p7 = SMIME.PKCS7(m2.pkcs7_read_bio_der(bio._ptr()))
sk = X509.X509_Stack()
certStack = p7.get0_signers(sk)
Es funktioniert. Allerdings gibt certStack nur ein Zertifikat (statt der gesamten Kette von Zertifikaten Rückkehr
Zwei Fragen:.
- bin ich etwas fehlt (kann es eine Option ist es zu wissen, dass ich die ganze brauchen Kette)
- gibt es andere Methoden, wie die gesamte Kette zu erhalten (unter Verwendung von pyopenssl werden)?
Mir ist der Unterschied zwischen einer Unterzeichner- und Unterzeichnerzertifikatkette bekannt. Der Code, den Sie haben, entspricht im Allgemeinen meinem Code (um Unterzeichner zu extrahieren). Es tut jedoch nichts, um Ketten zu bescheinigen. Ich habe mein PKCS7 bekommen und konnte die Kette mit dem Befehl "openssl pkcs7 print_certs" extrahieren (was zeigt, dass die Zertifikatskette dort irgendwo gespeichert ist). Im Allgemeinen ist meine Frage, wie man (in Python-Code) diese Zertifikatskette aus PKCS7 –
@VictorRonin extrahiert, um die Zertifikatskette 'openssl pkcs7 -print_certs' zu erhalten (siehe [pkcs7.c] (https://github.com/) openssl/openssl/blob/master/apps/pkcs7.c)) benutzen Sie 'p7-> d.sign-> certs'. Dies ist nicht direkt über die m2crypto-Schnittstelle möglich, vielleicht könnte es mithilfe von asn1 parsing abgerufen werden ... – mpromonet