gpt4 book ai didi

Python httplib.HTTPS连接和密码

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:22 29 4
gpt4 key购买 nike

我使用带有私钥的httplib.HTTPSConnection:

h = httplib.HTTPSConnection(url, key_file='../cert/priv.pem', cert_file='../cert/srv_test.crt')

然后我被要求输入该私钥的密码。是否可以选择不是从用户输入(控制台)而是从其他来源(代码、环境)输入此类密码?也许像 Java 中的东西:

-Djavax.net.ssl.keyStorePassword=my_secret_passwd

最佳答案

私钥文件加载在Python的_ssl模块中(用C写的部分)。来自 _ssl.c,第 333 行:

ret = SSL_CTX_use_PrivateKey_file(self->ctx, key_file, SSL_FILETYPE_PEM);

这是一个加载给定 key 文件的 OpenSSL 函数。如果提供密码,它将调用密码回调函数。由于该功能默认询问用户,因此您必须使用 SSL_CTX_set_default_passwd_cb_userdata 覆盖它。 .遗憾的是,此函数未包含在标准库或 M2Crypto(Python OpenSSL 包装器)中,但您可以在 pyopenssl 中找到它。 .

为了从受密码保护的 key 文件创建套接字,您必须执行如下操作:

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) 中提供了一个示例。

关于Python httplib.HTTPS连接和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com