对于 Python 2.7.9 未在 FreeBSD 上的正确位置查找 SSL 证书,我该怎么办?

对于 Python 2.7.9 未在 FreeBSD 上的正确位置查找 SSL 证书,我该怎么办?

我有一个 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.pempython 2.7.9 不需要。所以我最终将第二个链接到第一个。我在 上找不到任何对此错误的引用https://bugs.freebsd.org/bugzilla/

相关内容