如何查找自签名证书

2024-06-08 06:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对网站证书验证感到困惑。请参阅以下详细信息:

连接到网站(www.bitstamp.net)使用python urllib2抛出:

urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)>

curl给出了类似的错误:

^{pr2}$

但是,openssl显示每个已验证的证书(假设“1”表示已验证):

$ openssl s_client -showcerts -connect www.bitstamp.net:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify return:1
depth=2 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = COMODO CA Limited, CN = COMODO RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = Hosted by Incapsula Inc, OU = PositiveSSL Multi-Domain, CN = incapsula.com
verify return:1

这是怎么回事?是否有curl声称的“自签名证书”?如果是,哪一个?


Tags: netreturn网站domainwwwouurllib2cn
1条回答
网友
1楼 · 发布于 2024-06-08 06:16:29

这种行为有几个症状。让我们从第一期开始。在

链中的自签名证书错误:这是真的,也是有效的情况。因为每个根证书颁发机构都是自签名的。在您的例子中,AddTrust是自签名的。这可能表示curl/libssl或其他客户端无法识别证书颁发机构。正如您所说的openssl s_客户端验证证书。在许多linux发行版中,它位于/etc/ssl/certs下。你的可能不同,或者你需要更新它们。您还应该定义这些CA到库的位置(甚至在libssl-SSL\u CTX\u load_verify_locations中也是如此)

基于SNI的问题表明目标服务器在同一主机/ip上为多个基于TLS/SSL的站点提供服务。没有明确的SNI规范,服务器正在响应任何一个(我不确定选择算法,可能是随机的或第一个)。在

由于这些原因,这两个案子对我来说都是有效的。在

相关问题 更多 >

    热门问题