私はFreeBSD 10.0システムを持っており、数日前にpython27
ポートをPython 2.7.8からPython 2.7.9にアップグレードしました。 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
Python /etc/ssl/cert.pem
2.7.9では必要ありません。それで結局2番目を最初に接続するようになりました。このエラーへの参照が見つかりません。https://bugs.freebsd.org/bugzilla/。