python - 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()
谢谢!
解决方案
推荐阅读
- docker - 项目包括多个 Dockerfile 和共享一些文件的应用程序。如何构建它?
- java - 我在为 DAO 中的具体查询制作 AsynchTask 时遇到问题
- node.js - Node.js 应用程序 - 单个目录中的多个服务
- excel - 如何在 VBA 中的多列 ListBox 中的文件夹中填充多个文件的文件名和修改日期?
- python - Convert multipule HTML to CSV file quickly in Python
- c++ - 这是在 C++ 中定义结构的全局实例的好方法吗?
- video - 无法播放解密的 .ts 文件
- c++ - Windows API 模拟来自不同键盘的按键 (C++)
- javascript - 反应 useContext + TypeScript 范围错误
- excel - 更改 Excel 状态栏的背景颜色