我有一个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,但我宁愿不必一直这样做.)
解决方法:
各自的FreeBSD错误是here.该修补程序添加了符号链接:
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