2017-01-27 52 views
3

以下に示したコード例を示しますが、「証明書を読み込めません」というエラー応答があります。Pythonでx509証明書から公開鍵を抽出する方法は?

from cryptography.x509 import load_pem_x509_certificate 
from cryptography.hazmat.backends import default_backend 

cert_str = '-----BEGIN CERTIFICATE----- MIIDBTCCAe2gAwIBAgIQEsuEXXy6BbJCK3bMU6GZ/TANBgkqhkiG9w0BAQsFADAt... -----END CERTIFICATE-----'; 

cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend()) 
public_key = cert_obj.public_key(); 

エラー応答

Traceback (most recent call last): 
    File "C:\xampp1\htdocs\TestWorkPlace\TestPython\src\test1.py", line 10, in <module> 
    cert_obj = load_pem_x509_certificate(str.encode(cert_str), default_backend()) 
    File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\x509\base.py", line 43, in load_pem_x509_certificate 
    return backend.load_pem_x509_certificate(data) 
    File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\multibackend.py", line 341, in load_pem_x509_certificate 
    return b.load_pem_x509_certificate(data) 
    File "C:\Program Files (x86)\Python\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 1175, in load_pem_x509_certificate 
    raise ValueError("Unable to load certificate") 
ValueError: Unable to load certificate 

この問題を並べ替えるために私を助けてください。

答えて

1

秘密鍵はX509証明書には含まれておらず、公開鍵のみが含まれています。公開鍵を抽出するには正しいコードがありますが、証明書は適切なPEM形式ではないため読み込まれません。

A PEM形式の証明書は、中間の符号化データを-----BEGIN CERTIFICATE----------END CERTIFICATE-----デリミタとBASE64を有し、それはまた、(元々RFC 1421に定義されてもRFC 7468中に存在する)行あたり最大64個の文字である必要があります。

一部のソフトウェアは仕様よりも寛容ですが、pyca/cryptography(OpenSSLまたはLibreSSL)の基礎となるライブラリでは、この方法でフォーマットする必要があります。

+0

はい、これが問題でした。今それは働いている。ありがとう – mugzi

関連する問題