自己署名認証局pip
/conda
Gitに関する同様の問題を詳細に文書化した後(gitに自己署名証明書を受け入れさせるにはどうすればよいですか?)、ここでも、信頼できるMitM「攻撃」を提供するプロキシを備えた企業ファイアウォールの背後にあります。
すべてのSSL検証を無効にしないでください。
これは悪いセキュリティ文化を生み出します。その人にならないでください。
tl; dr
pip config set global.cert path/to/ca-bundle.crt
pip config list
conda config --set ssl_verify path/to/ca-bundle.crt
conda config --show ssl_verify
git config --global http.sslVerify true
git config --global http.sslCAInfo path/to/ca-bundle.crt
しかし、どこで入手できca-bundle.crt
ますか?
最新のCAバンドルを入手する
cURLは、MozillaFirefoxにバンドルされている認証局の抜粋を公開しています
https://curl.haxx.se/docs/caextract.html
cacert.pem
自己署名CAをこのファイルに追加する必要があるため、このファイルをテキストエディタで開くことをお勧めします。
証明書はX.509に準拠したドキュメントですが、いくつかの方法でディスクにエンコードできます。以下の記事はよく読まれていますが、短いバージョンでは、ファイル拡張子でPEMと呼ばれることが多いbase64エンコーディングを扱っています。次の形式で表示されます。
----BEGIN CERTIFICATE----
....
base64 encoded binary data
....
----END CERTIFICATE----
https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
自己署名証明書の取得
以下は、自己署名証明書を取得する方法に関するいくつかのオプションです。
- OpenSSLCLI経由
- ブラウザ経由
- Pythonスクリプティング経由
OpenSSLCLIで自己署名証明書を取得する
/unix/451207/how-to-trust-self-signed-certificate-in-curl-command-line/468360#468360
echo quit | openssl s_client -showcerts -servername "curl.haxx.se" -connect curl.haxx.se:443 > cacert.pem
ブラウザを介して自己署名認証局を取得する
この回答とリンクされたブログのおかげで、証明書を表示し、base64PEMエンコーディングオプションを使用してファイルにコピーする方法(Windowsの場合)が示されています。
このエクスポートされたファイルの内容をコピーして、ファイルの最後に貼り付けcacerts.pem
ます。
一貫性を保つため、このファイルの名前を変更cacerts.pem
- >ca-bundle.crt
と同様に簡単にどこかにそれを配置します。
%USERPROFILE%\certs\ca-bundle.crt
$HOME/certs/cabundle.crt
Python経由で自己署名認証局を取得する
のすべての素晴らしい答えに感謝します:
Pythonのリクエストから応答SSL証明書を取得するにはどうすればよいですか?
私はそれをさらに一歩進めることを試みるために以下をまとめました。
https://github.com/neozenith/get-ca-py
最終的に
このCAストアが追加の自己署名CAとともにどこにあるかがわかるように、pipとcondaで構成を設定します。
pip config set global.cert %USERPROFILE%\certs\ca-bundle.crt
conda config --set ssl_verify %USERPROFILE%\certs\ca-bundle.crt
または
pip config set global.cert $HOME/certs/ca-bundle.crt
conda config --set ssl_verify $HOME/certs/ca-bundle.crt
その後
pip config list
conda config --show ssl_verify
pip config list -v
For variant 'global', will try loading '/Library/Application Support/pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.pip/pip.conf'
For variant 'user', will try loading '/Users/jpeak/.config/pip/pip.conf'
For variant 'site', will try loading '/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/pip.conf'
参考文献