首页 > 解决方案 > tls1记录python ssl上的tls1.2握手

问题描述

我一直在尝试使用 pythonssl模块创建与服务器的 TLSv1.2 连接。我能够将握手 tls 版本更改为我想要的版本(TLSv1.2)。但无论我如何尝试设置我的 SSLContext,我只能创建一个带有 TLSv1 记录层的 Client Hello。

我看到了这个问题,这让我明白了为什么我失败了,但我现在很困惑。因为我尝试连接的服务器仅接受 TLSv1.2 记录层,如果不是,则立即结束连接而不会出现错误消息。那么是否有一种隐藏的方法来更改记录层版本,或者我应该寻找其他语言以获得更灵活的实现/尝试做我自己的古怪实现?

ssl.OPENSSL_VERSION返回OpenSSL 1.1.0j 20 Nov 2018,我正在运行 python 3.7.2

我的代码:

#!/usr/bin/env python3

import ssl
import socket

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.options |= ssl.OP_NO_SSLv3
context.options |= ssl.OP_NO_TLSv1
context.options |= ssl.OP_NO_TLSv1_1
context.set_ciphers("AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA")
context.options |= ssl.OP_NO_COMPRESSION
context.verify_mode = ssl.CERT_REQUIRED

s = socket.socket(socket.AF_INET)

conn = context.wrap_socket(s, server_hostname="address")

conn.connect(('address', 443))

conn.close()

谢谢!

标签: pythonpython-3.xsslopenssltls1.2

解决方案


推荐阅读