是否可以看到使用Python请求模块与服务器协商了哪个TLS版本?类似于openSSL s_client-connect
将返回的内容
--- No client certificate CA names sent --- SSL handshake has read 3043 bytes and written 375 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.1 Cipher : ECDHE-RSA-AES256-SHA Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None
在https://stackoverflow.com/a/55462022/6368697复制我的另一个答案的核心如果您只想做一次测试,一个monkey补丁就足够了(否则请阅读我的答案的其余部分,它提供了一个使用传输适配器的正确实现,以及接收到的证书的正确显示):
import requests
from requests.packages.urllib3.connection import VerifiedHTTPSConnection
SOCK = None
_orig_connect = requests.packages.urllib3.connection.VerifiedHTTPSConnection.connect
def _connect(self):
global SOCK
_orig_connect(self)
SOCK = self.sock
requests.packages.urllib3.connection.VerifiedHTTPSConnection.connect = _connect
requests.get('https://yahoo.com')
tlscon = SOCK.connection
print 'Cipher is %s/%s' % (tlscon.get_cipher_name(), tlscon.get_cipher_version())
print 'Remote certificates: %s' % (tlscon.get_peer_certificate())
print 'Protocol version: %s' % tlscon.get_protocol_version_name()
这产生了:
Cipher is ECDHE-RSA-AES128-GCM-SHA256/TLSv1.2
Remote certificates: <OpenSSL.crypto.X509 object at 0x10c60e310>
Protocol version: TLSv1.2
我写了一个小的测试程序来创建 自定义自签名CA证书#1 创建由该CA根证书#1颁发的服务器证书#2 创建具有证书#2的服务器 创建一个RootCA指向证书1的客户端 客户端尝试连接到服务器,但出现错误: 得到“https://localhost:2000:x509:由未知颁发机构签署的证书(可能是因为尝试验证候选颁发机构证书“测试ca”时“x509:Ed25519验证失败”) 我知道这方面的例子有
我已经在Go中编写了一个简单的客户机/服务器,它将通过TLS执行HTTP GET,但我也试图使它能够通过TLS执行HTTP POST。 我现在也没有什么东西可以在服务器端处理这个帖子,但我只想让它把它打印到屏幕上,这样当我运行客户端时,我就会看到服务器打印。 我应该如何修复我的客户端代码来做一个适当的帖子?而相应的服务器代码应该是什么样子才能接受POST呢?任何帮助都将非常感谢,我有困难找到HTT
问题内容: 我有一个node.js应用程序,我想使用它来检查特定站点是否启动并返回正确的响应代码。我希望能够捕获由于域名无法解析或请求超时而出现的任何错误。问题是这些错误导致Node无法处理。我是整个异步编程方法的新手,所以我不确定将try / catch语句放在哪里。 我有一个ajax调用,该调用类似于/ check / site1。服务器端调用一个函数,该函数尝试建立连接,然后返回status
问题内容: 我在跟踪为什么无法连接到特定主机时遇到问题。 通过curl或浏览器,以下命令可以正常工作: 但是,如果我使用请求: 我得到: 在网络上,我仅看到客户端问好,服务器立即断开连接,因此似乎没有任何ssl或密码不兼容。(我希望这些都是SSL层错误)在这种情况下还有什么其他问题? 我在python 3.6.1上,请求2.14.2(带有安全性额外功能)。 问题答案: 该服务器以多种方式损坏。 一
我试图实现一个tcp客户端,它将使用spring Integration连接到现有的服务器。对于这项技术还是新手,我已经在https://github.com/spring-projects/spring-integration-samples上学习了spring示例。 主要方法: 如何强制此客户端连接到我的服务器,即使我不想发送数据?
我正在尝试创建TLS v1。2.服务器和android客户端之间的通信。我建立了TLS v1。0连接有任何问题,但我无法获取v1。2.这是服务器代码: 虽然这是客户端代码: 客户端代码,写在java客户端运行在JRE7在我的PC上,完美的作品,我看到与getProtocol(服务器端)TLSv1.2正确的密码,由tlsv1.2支持。在Android上相同的代码使tlsv1.0连接!我真的不明白。在