我有一个 FreeBSD 10.0 系统,几天前,我将python27
端口从 Python 2.7.8 升级到 Python 2.7.9,默认启用了 SSL 验证。毫不奇怪,它破坏了我现有的使用自签名证书连接到服务器的 Python 脚本。令人惊讶的是,它破坏了我连接到具有有效 SSL 证书的服务器的脚本。
我有/usr/local/etc/ssl/cert.pem
(这是 的符号链接/usr/local/share/certs/ca-root-nss.crt
)但没有/etc/ssl/cert.pem
。我的 Python 安装需要后者:
>>> ssl.get_default_verify_paths()
DefaultVerifyPaths(cafile=None,
capath=None,
openssl_cafile_env='SSL_CERT_FILE',
openssl_cafile='/etc/ssl/cert.pem',
openssl_capath_env='SSL_CERT_DIR',
openssl_capath='/etc/ssl/certs')
我已经通过创建适当的符号链接来解决这个问题,但是有更好的方法吗?这是必要的吗,还是端口本身应该解决这个问题?
(我SSL_CERT_FILE
也可以在我的环境中进行设置,但我不想一直这样做。)
答案1
相应的 FreeBSD 错误是这里。该修复添加了符号链接:
ln -sf /usr/local/etc/ssl/cert.pem /etc/ssl/cert.pem
ln -sf /usr/local/etc/ssl/cert.pem /usr/local/openssl/cert.pem
答案2
我有ca_root_nss
它提供/usr/local/etc/ssl/cert.pem
但/etc/ssl/cert.pem
python 2.7.9 不需要。所以我最终将第二个链接到第一个。我在 上找不到任何对此错误的引用https://bugs.freebsd.org/bugzilla/。