gpt4 book ai didi

python - 如何找到自签名证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:01 25 4
gpt4 key购买 nike

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

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

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

curl 给出了类似的错误:

$ curl https://www.bitstamp.net
curl: (60) SSL certificate problem: self signed certificate in certificate chain

但是,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 声称的“自签名证书”?如果有,是哪一个?

最佳答案

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

链错误中的自签名证书:这是真实的,也是一个有效的案例。因为每个根证书颁发机构都是自签名的。在您的情况下, AddTrust 是自签名的。这可能表明 curl/libssl 或其他客户端无法识别证书颁发机构。正如您所说,openssl s_client 已验证证书。在许多 Linux 发行版中,它位于/etc/ssl/certs 下。您的可能不同,或者您可能需要更新它们。您还应该将这些 CA 的位置定义到库中(即使在 libssl - SSL_CTX_load_verify_locations 中)

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

由于这些原因,这两种情况对我来说似乎都是有效的。

关于python - 如何找到自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49825793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com