2017-11-16 4 views
1

sslハンドシェイクで暗号化モジュールを使用して生成した自己署名入りx509証明書を使用しようとしています。私はthe documentationに規定するPEMファイルに証明書と鍵を生成し、次の関数を使用して、ファイルにそれらを書いている:ソケットをラップするときに使用する自己署名付き証明書

def write_key_and_cert(self, certname="cert.pem", keyname="key.pem"): 
    with open(certname, "wb") as f: 
     f.write(self.cert.public_bytes(serialization.Encoding.PEM)) 
    with open(keyname, "wb") as f: 

    f.write(self.private_key.private_bytes(encoding=serialization.Encoding.PEM, 
              format=serialization.PrivateFormat.TraditionalOpenSSL, 
              encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase"),),) 

問題はソケットのラッピングの際に発生する、サーバはcertfileにを使用することができませんおよびキーファイルを削除するとハングアップします。私はそれがキーファイルが暗号化されているためだと信じています(sslのラッピングはキーファイルを解読していません)。暗号モジュールで生成されたcertfile/keyfileを使用する方法はありますか?

答えて

2

この問題は、コンテキストを作成し、証明書チェーンをロードするときにパスワードを指定することによって解決された:

context = ssl.create_default_context() 
context.load_cert_chain(certfile=self.certfile, keyfile=self.keyfile, password=b"passphrase") 

これは、SSLモジュールが適切にキーファイルとロードの復号化を行うことができます。

関連する問題