我遇到了一个我收到错误消息的问题:
Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598) -- Some packages may not be found!
这是我自己的OpenSSL自定义编译。但是,我的网络浏览器很好地信任这个网站。
我已经尝试过<openssldir>/certs/
并将证书放在那里,然后运行一个小的BASH脚本,为每个人创建<hash>.0
格式的符号链接。我已经在几个地方读到这是它应该如何工作
for f in *.pem
do
ln -s "$f" `openssl x509 -hash -noout -in "$f"`.0
done
我有点能让它运转起来......当我跑步时:
openssl s_client -showcerts -connect pypi.python.org:443 -CApath .
我得到(截断)
Start Time: 1399590981
Timeout : 300 (sec)
Verify return code: 0 (ok)
但是,当我跑:
openssl s_client -showcerts -connect pypi.python.org:443
我明白了:
Start Time: 1399591046
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
为什么只有当我指定-CApath?
时默认情况下如何让它使用?
答案 0 :(得分:4)
使用此命令验证证书来自的公司:
openssl s_client -connect pypi.python.org:443
结果:
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance CA-3
verify error:num=20:unable to get local issuer certificate
你没有根证书...然后从下载DigiCertAssuredIDRootCA.crt: https://www.digicert.com/digicert-root-certificates.htm
并将其与-CAfile
:
openssl s_client -connect pypi.python.org:443 -CAfile DigiCertAssuredIDRootCA.crt
现在有效!