python - SSL_CERT_DIR 未由 urllib2 评估

标签 python ssl python-requests ssl-certificate urllib2

我有一个小脚本来测试使用 `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

有一个discussionrequests 中添加对此的支持,但我没有在 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/

相关文章:

python - 实例化由多个 ModelSerializer 组成的 Serializer - Django Rest Framework

python - 如何将一个数组的顺序复制到另一个数组中? [Python]

amazon-web-services - 使用 google 域的 AWS SSL 配置

Python 请求多线程 "Max Retries exceeded with url"Caused by <class 'socket.gaierror' >

python - 将函数应用于数据框中的列 - python

python - 如何使用 Flask_login.login_required 装饰器客户端

mysql - 如何通过 SSL 连接到 Google Cloud SQL?

带有 SSL 到特定证书的 Android 休息客户端

python - 客户端证书在 curl 中有效,但在 Python 中无效

python - 使用带有下拉选项的 Python 请求模块