python 3.5中的ssl.match_hostname()函数
backports.ssl_match_hostname的Python项目详细描述
来自python 3.7的ssl.match_hostname()函数
=========
如果检查连接到的服务器返回的证书中的主机名,则安全套接字层实际上是*secure*
,
并验证它是否与您试图访问的主机名相匹配。
单独实现可能有点困难。
因此python 3.2标准库中的“ssl”包现在包含一个用于执行此检查的“match\u hostname()”函数,而不是要求每个应用程序分别执行检查。
用户
使用早期版本的python。
只需将此分发作为包的依赖项,
,然后按如下方式使用它:
from backports.ssl\u match\u hostname import match\u hostname,certificateerror
[…]
ssl sock=ssl.wrap\u socket(sock,ssl\u version=ssl.protocol\u sslv23,
cert_reqs=ssl.cert_required,ca_certs=…)
尝试:
匹配主机名(sslsock.getpeercert(),hostname)
除了certificateerror,ce:
…
brandon craig rhodes只是此发行版的打包程序;
里面的实际代码来自python 3.7,对
可移植性做了一些小的更改。
从python 2.6开始,“`ssl`”包含在python标准库中,因此不需要单独安装。
_` ssl模块`::https://pypi.python.org/pypi/ssl
history
----
*此函数在python-3.2中引入
*已为python-3.4a 1更新cve
(backports-ssl_match_hostname-3.4.0.1)
*已从rfc2818更新到rfc 6125,以修复python-3.3和python-3.4a5
(backports-ssl\u match\u hostname-3.4.0.2)
*在python-3.5中更新了它,以处理serveraltname字段中的ipaddress
(如果还从pypi安装
ipaddress库,backports.ssl\u match\u hostname将执行此操作)。
*在python-3.7中更新了它,以处理不带ipaddress库和ipaddress库的ipaddress。放弃了对部分通配符的支持。_` ipaddress模块`::https://pypi.python.org/pypi/ipaddress
…_ rfc2818:http://tools.ietf.org/html/rfc2818.html