栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

查看源代码,ssl.wrap_socket直接调用本机代码(openssl)函数SSL_CTX_use_cert_chain_file,该函数需要文件路径,因此无法进行尝试。

以供参考:

在ssl / init .py中,我们看到:

def wrap_socket(sock, keyfile=None, certfile=None,     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语言,因此在变通方法中,我也看不到立即出现猴子补丁的地方。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651412.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号