Python: TLS 1.2 (Cipher)握手在Postman安装后工作



Windows Server 2012 R2, Python 3.10.5,以下代码

conn = http.client.HTTPSConnection("utslogin.nlm.nih.gov")
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
conn.request("POST", utslogin_path, "apikey=" + self.api_key, headers)
res = conn.getresponse()

抛出以下异常

意外错误=SSLCertVerificationError(1, '[SSL:CERTIFICATE_VERIFY_FAILED] cer证书验证失败:无法获取本地颁发者证书(_ssl.c:1123)'),类型(err)=<class"ssl.SSLCertVerificationError"在>

当查看WireShark日志时,发现密码TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256和TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384丢失。

安装了Postman以了解哪里出了问题,之后Python代码开始工作。

我不确定邮差在这里做了什么,它是安装丢失的密码,如果是,那么在Windows操作系统上添加的密码在哪里?遵循微软链接:https://learn.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel和进一步的组策略设置,但没有找到这些密码。有人知道邮差会把这些密码加在哪里吗?

发现邮差正在安装证书"Starfield class 2证书颁发机构"从https://ssl-tools.net/subjects/8bc19e845b981d61cf5469211a68b8e311336d90下载并安装,代码运行成功,没有任何异常

谢谢你的提示@PatrickMevzek