【问题标题】:What is the point of do_handshake indo_handshake 中有什么意义
【发布时间】:2018-12-21 08:36:54
【问题描述】:

我需要创建一个执行 TLS 握手的 TLS 客户端。我使用context.wrap_socket,它接受一个参数do_handshake_on_connect,它接受TrueFalse。但是,我一直在握手而没有将此变量设置为 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


    【解决方案1】:

    do_handshake_on_connect 如果在我做的时候是隐式完成的,那它有什么意义:ssl_sock.connect

    the official documantion 中清楚地显示了该点。引用:

    do_handshake_on_connect 参数指定是否在执行 socket.connect() 后自动进行 SSL 握手,或者应用程序是否会通过调用 SSLSocket.do_handshake() 方法显式调用它。 调用 SSLSocket.do_handshake() 显式地让程序控制握手中涉及的套接字 I/O 的阻塞行为

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2010-11-29
      • 2010-10-15
      • 2011-02-05
      • 2012-02-28
      • 2018-01-13
      • 2015-03-18
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多