python 请求库的 SSL 证书验证失败
SSL certificate verify failed with python requests library
我们有这个本地站点,它最近刚刚更新了它的证书。我将证书保存在 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.26
Connecting to mylocalsite (mylocalsite)|10.41.13.26|:8080... connected.
所以证书似乎工作正常,然后我在同一个盒子上使用请求 2.10.0 和 python 3.4.3:
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
对 "only" 拥有正确的证书感到满意,但您需要将整个链传递给请求的 verify
参数(尽管两者都使用相同的库当然是引擎盖)。
请求中的 SSL 支持需要一些严重改造(并且它正在 AFAIK 上工作)
我们有这个本地站点,它最近刚刚更新了它的证书。我将证书保存在 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.26
Connecting to mylocalsite (mylocalsite)|10.41.13.26|:8080... connected.
所以证书似乎工作正常,然后我在同一个盒子上使用请求 2.10.0 和 python 3.4.3:
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
对 "only" 拥有正确的证书感到满意,但您需要将整个链传递给请求的 verify
参数(尽管两者都使用相同的库当然是引擎盖)。
请求中的 SSL 支持需要一些严重改造(并且它正在 AFAIK 上工作)