gpt4 book ai didi

python - 如何在 python ssl 中获取服务器选择的 TLS 版本

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:43 25 4
gpt4 key购买 nike

我正在使用 python 3.6.5 和 Windows 10。我需要获取服务器选择的 TLS 版本(即,将用于其余握手的版本,而不是客户端提供的版本)。我这样做了:

import socket, ssl

context = context = ssl.create_default_context()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
domain = 'google.com'
sslSocket = context.wrap_socket(s, server_hostname = domain)
sslSocket.connect((domain, 443))
print('the selected version by the server: ', sslSocket.cipher()[1])
print("success")
sslSocket.close()

但是输出是:

the selected version by the server:  TLSv1/SSLv3
success

我需要准确的版本。即,在与 google.com 的连接中,浏览器显示的是 TLS 1.2。如何在我的代码中获得准确的版本?

最佳答案

您混淆了密码和协议(protocol)版本。密码描述选择了哪些加密算法(即像 AES 加密、SHA-1 HMAC、RSA 身份验证、ECDHE key 交换),而协议(protocol)版本说明使用哪个 SSL/TLS 协议(protocol)版本。您当前显示的值只是协议(protocol)版本,因为标准提供了客户端和服务器使用的通用密码。

要获取连接使用的协议(protocol)版本,您需要使用 SSLSocket.version() :

print('the selected version by the server: ', sslSocket.version())

关于python - 如何在 python ssl 中获取服务器选择的 TLS 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49787069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com