2017-05-24 40 views
2

我試圖從加載的x509證書中提取簽名。我提取了一切(發行者,主題,PEM,SignatureAlgorithm等)。我已經找到了這個,但已經不足了。任何幫助將不勝感激!如何從x509證書中提取簽名

from OpenSSL import crypto 

certobj = crypto.load_certificate(crypto.FILETYPE_ASN1, cert) 

issuer = certobj.get_issuer() 
subject = certobj.get_subject() 

certDetails = { 
    "SerialNumber": certobj.get_serial_number(), 
    "Signature": None, # <-- This is what I am trying to get! 
    "SignatureAlgorithm": certobj.get_signature_algorithm(), 
    "CertificatePEM": crypto.dump_certificate(crypto.FILETYPE_PEM, certobj), 
    "SubjectPublicKeyPEM": crypto.dump_publickey(crypto.FILETYPE_PEM, certobj.get_pubkey()), 
    "Version": certobj.get_version() 
} 
+0

你在尋找公鑰嗎?這實際上允許你發送一個可信的消息到CA:[''certobj.get_pubkey()'](https://pyopenssl.readthedocs.io/en/latest/api/crypto.html#OpenSSL.crypto.X509 .get_pubkey) – Aaron

+0

@Aaron號我有存儲在'certDetails.SubjectPublicKeyPEM'中的公鑰。我正在尋找簽名值本身。 – cmeadows

回答

0

有點迂迴,但我轉換的證書到一個加密證書對象來訪問簽名:

cryptCert = cert.to_cryptography()

打印hexlify(cryptCert.signature)