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


Python ssl.SSLContext.check_hostname用法及代碼示例


用法:

SSLContext.check_hostname

是否匹配 SSLSocket.do_handshake() 中對等證書的主機名。上下文的 verify_mode 必須設置為 CERT_OPTIONALCERT_REQUIRED ,並且您必須將 server_hostname 傳遞給 wrap_socket() 才能匹配主機名。啟用主機名檢查會自動將 verify_modeCERT_NONE 設置為 CERT_REQUIRED 。隻要啟用了主機名檢查,就不能將其設置回CERT_NONEPROTOCOL_TLS_CLIENT 協議默認啟用主機名檢查。對於其他協議,必須明確啟用主機名檢查。

例子:

import socket, ssl

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_default_certs()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = context.wrap_socket(s, server_hostname='www.verisign.com')
ssl_sock.connect(('www.verisign.com', 443))

3.4 版中的新函數。

在 3.7 版中更改:verify_mode現在自動更改為CERT_REQUIRED當啟用主機名檢查並且verify_modeCERT_NONE.以前相同的操作會失敗ValueError.

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 ssl.SSLContext.check_hostname。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。