當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。