我目前正在努力让请求库使用Let's Encrypt证书GET
对我的站点执行一个简单的请求。该网站一切正常,我可以从 Chrome 访问它。(我现在正在运行 OSX El Capitan)。
首先,我尝试GET
向该站点发出请求:
>>> import requests
>>> requests.get('https://example.com')
这给了我:
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
然后我尝试了各种方法,包括获取Let's Encrypt 授权证书,以下openssl
命令成功验证了我网站的证书:
> openssl s_client -CAfile ./letsencryptauthorityx1.pem -connect example.com:443
其输出包括以下内容:
...
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: ...
Session-ID-ctx:
Master-Key: ...
Key-Arg : None
Start Time: 1452865123
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
也许我在这里遗漏了一些东西,但在我看来,我的网站好像已经根据我提供的 Let's Encrypt 授权证书进行了验证。所以,我很高兴地将我的 Python 代码更改为:
>>> requests.get('https://example.com', verify='./letsencryptauthorityx1.pem')
但我仍然不断收到requests.exceptions.SSLError
错误。我也尝试过使用DER
授权证书的格式,但后来我收到以下错误requests
:
requests.exceptions.SSLError: unknown error (_ssl.c:2825)
有人可以教育我如何解决这个问题吗?