2016-08-05 42 views
1

私はJIRA-Pythonモジュールを使用してJIRA上で私の会社のインスタンスに接続しており、証明書と鍵を渡す必要があります。 しかし、OpenSSLモジュールを使用して、ローカル証明書とキーを読んでリクエストに沿って渡すことができません。Pythonで証明書(.crt)とキー(.key)ファイルを読む

読書のためのコードは、誰かがX509オブジェクトに私の地元の.CRTと.KEYファイルを読み取る方法を教えてください。私が手にエラーが

Traceback (most recent call last): 
File "flaskApp.py", line 19, in <module> 
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c) 
TypeError: must be X509, not str 

ある

import OpenSSL.crypto 
c = open('/Users/mpadakan/.certs/mpadakan-blr-mpsot-20160704.crt').read() 
cert = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, c) 

を下回っていますか

+0

詳しい情報をください。なぜあなたはあなたのローカル証明書と鍵を読むことができませんか? –

+0

確実なもの。ちょうど変更を加えました –

+2

私はここで間違った方法を使用していると信じています。 'dump_certificate'メソッドはX509証明書を要求し、それを文字列にダンプします。あなたは文字列から証明書をロードしたいようです。あなたは 'load_certificate'を使って試しましたか? –

答えて

0

.crtファイルの形式は次のとおりです。 があります:-----BEGIN CERTIFICATE-----

  • で始まる

    1. テキストは、base64テキストは\x30バイトから始まるMI文字
    2. バイナリデータの使用を開始しましたか?最初の二つの場合

    はPEM形式がありますが、2番目のいずれかであなただけの正しいPEMファイルを取得したり、base64のバイナリおよび第三のケースを取得するためにファイルを変換するためにそれを追加し、凝視ラインが欠落しています。第三の場合

    あなたがそうあなたがOpenSSL.crypto.FILETYPE_ASN1

  • 0

    @缶ibanoglu右側のだった使用する必要があり、それをロードするために、DER形式を持っている:

    import OpenSSL.crypto 
    cert = OpenSSL.crypto.load_certificate(
        OpenSSL.crypto.FILETYPE_PEM, 
        open('/tmp/server.crt').read() 
    ) 
    
    >>> cert 
    <OpenSSL.crypto.X509 object at 0x7f79906a6f50> 
    
    関連する問題