我有一个小脚本来测试使用 `urllib2:
到自签名https
站点的连接:
#!/usr/bin/env python
try:
import urllib2 # python2
except:
import urllib.request as urllib2 # python3
import sys
req = urllib2.Request(sys.argv[1], headers={'User-Agent':'Mozilla/5.0'})
urllib2.urlopen(req)
我正在测试我的自签名 https 站点,如下所示:
SSL_CERT_FILE="/certs-dir/self-signed-site.crt" python urllib2_test.py https://localhost:5554
这行得通。
但这不是:
SSL_CERT_DIR="/certs-dir" python urllib2_test.py https://localhost:5554
这也行不通:
SSL_CERT_DIR="/certs-dir/self-signed-site.crt" python urllib2_test.py https://localhost:5554
有一个discussion在 requests
中添加对此的支持,但我没有在 urllib2
中找到对 SSL_CERT_DIR
的引用。一定有什么东西,也许是通过底层的 ssl
库?
为 urrlib2
定义的 SSL_CERT_FILE
/SSL_CERT_DIR
的处理在哪里?
最佳答案
SSL_CERT_DIR 和 SSL_CERT_FILE 不是 urllib2 或请求的特性,而是底层 OpenSSL 库的特性。但是,仅仅将新证书放入给定目录是不够的,您需要使用带有证书哈希的正确文件名。参见 rehash获取更多信息。
关于python - SSL_CERT_DIR 未由 urllib2 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49005177/