企业优惠唯一官方(www.qyyh.com)- 实用的企业优惠信息大全

手机版 网站地图 txt地图 html地图

域名ssl分类
热门标签:
最新标签:

如何使用证书存储在python中的字符串变量打开ssl套接字

日期:2022/10/03 09:17作者:人气:

导读:...

查看源代码,ssl.wrap_socket直接调用本地代码(openssl)函数SSL_CTX_use_cert_chain_file,它需要一个文件的路径,因此您无法做的是尝试做的。
参考:
在ssl
/
init
.py中,我们看到:
def
wrap_socket(sock,keyfile
=无,certfile
=无,
server_side
=
False,cert_reqs
=
CERT_NONE,
ssl_version
=
PROTOCOL_SSLv23,ca_certs
=
None,
do_handshake_on_connect
=
True):
return
SSLSocket
sock,keyfile
=
keyfile,certfile
=
certfile,
server_side
=
server_side,cert_reqs
=
cert_reqs,
ssl_version
=
ssl_version,ca_certs
=
ca_certs,
do_handshake_on_connect
=
do_handshake_on_connect)
将我们指向SSLSocket构造函数(它在同一个文件中),我们看到以下情况:
self._sslobj
=
_ssl2.sslwrap(self._sock,server_side,
keyfile,certfile,
cert_reqs,ssl_version,ca_certs)
_ssl2在C(_ssl2.c)中实现
查看sslwrap函数,我们看到它正在创建一个新对象:
return(PyObject
*)newPySSLObject(Sock,key_file
,cert_file,
server_side,verification_mode,
protocol,cacerts_file);
查看该对象的构造函数,我们最终会看到:
ret
=
SSL_CTX_use_certificate_chain_file(self->
ctx,
cert_file);
这个函数在openssl中定义,所以现在我们需要切换到那个代码库。
在ssl
/
ssl_rsa.c中,我们最终在函数中找到:
BIO_read_filename
in,file)
如果你深入到BIO代码(openssl的一部分)最终成为正常的fopen():
fp
=
fopen(ptr,p)
所以它看起来像它当前写的。它必须在C的fopen()可打开的文件中。
此外,由于python的ssl库很快跳转到C,我在一个解决方法中看不到一个明显的monkeypatch的地方。

网站地图

Copyright © 2022-2023 qyyh.com 企业优惠网 版权所有 工信部备案号:蜀ICP备19014027号-8

声明: 企业优惠