我们有这个本地站点,最近刚刚更新了它的证书。我将证书保存在certs.pem文件中,并尝试将其与某些工具连接。以下操作在Ubuntu 14.10机器上完成。

当我跑步时:

openssl s_client -connect mylocalsite:8080 -verify 9 -CAfile certs.pem


我得到Verify return code: 0 (ok),然后运行:

wget https://mylocalsite:8080 --ca-certificate=certs.pem


我得到:

--2016-06-15 01:53:00-- https://mylocalsite:8080/Resolving mylocalsite (mylocalsite)... 10.41.13.26Connecting to mylocalsite (mylocalsite)|10.41.13.26|:8080... connected.

因此证书似乎可以正常工作,然后在同一框中使用带有Python 3.4.3的请求2.10.0:

import requests
requests.get('https://mylocalsite:8080', verify='/path/to/certs.pem')


我懂了

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)


我对SSL相关事物完全陌生。这里可能出什么问题了?

谢谢!

最佳答案

看起来openssl s_client -connect对“只有”拥有正确的证书感到满意,但是您需要将整个链传递给请求的verify参数(尽管两者都在后台使用了相同的库)。

请求中的SSL支持需要进行一些重大改进(并且已在AFAIK上运行)

09-19 17:51