1

SSL ハンドシェイクで暗号化モジュールを使用して生成された自己署名 x509 証明書を使用しようとしています。ドキュメントで規定されているように、証明書と 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"),),)

ソケットのラッピング中に問題が発生し、サーバーが証明書ファイルとキーファイルを使用できず、ハングが発生します。キーファイルが暗号化されていることが原因だと思います(sslラッピングはキーファイルを復号化していません)。暗号化モジュールで生成された証明書ファイル/キーファイルを使用する方法はありますか?

4

1 に答える 1

2

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

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

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

于 2017-11-18T22:23:46.237 に答える