当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python ssl.match_hostname用法及代码示例


用法:

ssl.match_hostname(cert, hostname)

验证cert(以解码格式返回ssl.SSLSocket.getpeercert) 匹配给定的hostname.应用的规则是用于检查 HTTPS 服务器身份的规则,如RFC 2818,RFC 5280RFC 6125.除了HTTPS,这个函数应该适合在FTPS、IMAPS、POPS等各种基于SSL的协议中检查服务器的身份。

CertificateError 在失败时引发。成功时,该函数不返回任何内容:

>>> cert = {'subject': ((('commonName', 'example.com'),),)}
>>> ssl.match_hostname(cert, "example.com")
>>> ssl.match_hostname(cert, "example.org")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/py3k/Lib/ssl.py", line 130, in match_hostname
ssl.CertificateError: hostname 'example.org' doesn't match 'example.com'

3.2 版中的新函数。

在 3.3.3 版中更改:现在函数如下RFC 6125,第 6.4.3 节,并且既不匹配多个通配符(例如*.*.com或者*a*.example.org) 也不是国际化域名 (IDN) 片段内的通配符。 IDN A-labels 例如www*.xn--pthon-kva.org仍受支持,但x*.python.org不再匹配xn--tda.python.org.

在 3.5 版中更改:现在支持在证书的 subjectAltName 字段中匹配 IP 地址。

在 3.7 版中更改:该函数不再用于 TLS 连接。主机名匹配现在由OpenSSL 执行

当通配符是该段中最左边和唯一的字符时,允许通配符。不再支持像 www*.example.com 这样的部分通配符。

自 3.7 版起已弃用。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 ssl.match_hostname。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。