我有一个Python,它使用https包请求requests URL。这样做,我会得到一个证书错误:
import requests
resp = requests.get('https://comicskingdom.com/', verify=True)我看到的错误是:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)我的系统已经安装了证书包,但显然目标服务器的证书无法使用该包的包进行验证。如何正确验证此证书?在哪里可以下载适当的证书链?在将来,我如何知道在哪里为任何给定的证书找到正确的证书链?
发布于 2021-03-21 17:01:24
解决方案:
请求文档:https://requests.readthedocs.io/en/master/user/advanced/ (检查args和kwargs可能性(cert=.)第一章SSL证书验证)
但要迅速解决你的问题:

然后,在您的requests.get中,向链文件添加路径
>>> requests.get('https://comicskingdom.com', verify='{path}/comicskingdom-com-chain.pem')
<Response [200]>证书有问题,所以我会把我能找到的东西寄到这里。
什么问题?
通过这个链接或通过查找错误,可以找到问题到底是什么?
来源:https://security.stackexchange.com/questions/16085/how-to-get-public-key-of-a-secure-webpage
若要检查问题,请运行以下命令
此命令将显示证书正常,但存在问题。
openssl s_client -connect comicskingdom.com:443 | openssl x509 -pubkey -noout哪种输出
openssl s_client -connect comicskingdom.com:443 | openssl x509 -pubkey -noout
depth=0 OU = Domain Control Validated, CN = *.comicskingdom.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, CN = *.comicskingdom.com
verify error:num=21:unable to verify the first certificate
verify return:1注意事项这一部分
verify error:num=20:unable to get local issuer certificate与我收到的请求错误相匹配的
requests.exceptions.SSLError: HTTPSConnectionPool(host='comicskingdom.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1091)')))https://stackoverflow.com/questions/66732852
复制相似问题