秘密鍵ファイルは、Python の _ssl モジュール (C で記述されている部分) に読み込まれます。_ssl.c の 333 行目から:
ret = SSL_CTX_use_PrivateKey_file(self->ctx, key_file, SSL_FILETYPE_PEM);
これは、指定されたキー ファイルをロードする OpenSSL 関数です。パスワードが提供されると、パスワード コールバック関数が呼び出されます。その関数はデフォルトでユーザーに尋ねるため、 を使用してオーバーライドする必要がありますSSL_CTX_set_default_passwd_cb_userdata
。残念ながら、この関数は標準ライブラリまたは M2Crypto (Python OpenSSL ラッパー) には含まれていませんが、 pyopensslで見つけることができます。
パスワードで保護された鍵ファイルからソケットを作成するには、次のようにする必要があります。
from OpenSSL import SSL
ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.set_passwd_cb(lambda *unused: "yourpassword")
ctx.use_privatekey_file(keyFilename)
ctx.use_certificate_file(certFilename)
someSocket = SSL.Connection(ctx, socket.socket())
HTTPS 接続を作成するのは少し難しく、pyopenssl で行う方法はわかりませんが、pyopenssl のソース コード (test_ssl.py:242) にサンプルが用意されています。