【发布时间】:2018-12-21 08:36:54
【问题描述】:
我需要创建一个执行 TLS 握手的 TLS 客户端。我使用context.wrap_socket,它接受一个参数do_handshake_on_connect,它接受True 或False。但是,我一直在握手而没有将此变量设置为 True(我根本不传递它)。我得到握手结果,例如服务器选择的 TLS 密码套件和版本。
我错过了什么吗? do_handshake_on_connect 的意义是什么,如果我这样做时隐式完成:ssl_sock.connect
我不明白这一点,我担心我遗漏了一些东西。
import socket, ssl
context = ssl.SSLContext()
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))
【问题讨论】:
标签: python sockets ssl network-programming tls1.2