PythonでpipからインストールをしようとするとSSL: CERTIFICATE_VERIFY_FAILEDに出くわすことがあります。
割と証明書まわりを理解するのに苦労したのでまとめておこうと思います。
※本記事はあくまでも個人の経験・調査結果をもとにしており、
実行環境やバージョンなどで結果が異なる可能性があるので、自己責任で参考程度にお願いします。。
インストール時のSSL: CERTIFICATE_VERIFY_FAILEDの解決法
SSL: CERTIFICATE_VERIFY_FAILEDが出てしまう原因は、アクセス先が信頼できませんよと言われているためです。
では具体的な解決策を見ていきましょう。
pipから何かをインストールする時にSSL: CERTIFICATE_VERIFY_FAILEDとなってしまう場合は、
まず会社でプロキシが設定されている場合が考えられるので、必要な部署に問い合わせて.pemファイルなどの証明書をもらいましょう。
Macであればどこかしらのフォルダに証明書を保管し、はWindowsであればpip.ini、またはMacであればpip.confを探し出して、以下のように設定します。
cert = / your cert path /XXX.crt
証明書を無視する場合、インストール時のオプションとしてtrusted-hostをつけるというやり方があります。
具体的には
pip install –trusted-host XXXX
というようにオプションで指定して、XXXには例えばエラーで(host=’pypi.org’, port=443)と入っていたらpypi.orgを指定する、といった具合です。
Windowsのpip.ini、またはMacのpip.confに設定したいのであれば以下のように設定します。
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
複数ある場合はスペース区切りとなります。反映されているかどうかは
pip config list -v
で確認可能です。
スポンサーリンク
requests時のSSL: CERTIFICATE_VERIFY_FAILEDの解決法
Pythonのrequestsの過程においてSSLのエラーが出ており、requestsの引数がverify=Trueであるならば、REQUESTS_CA_BUNDLEを設定する必要があります。Macであれば、
REQUESTS_CA_BUNDLE = ‘/Users/XXX(your path)/XXX/cert.pem’
export REQUESTS_CA_BUNDLE
という風にpemファイルの場所を指定します。
設定後は.bashrc(ログインするときに一度だけ読み込み)か、.bash_profile(bash起動時に毎回読込)に同様に設定しておくことをお勧めします。
Windowsであれば環境変数で新規にREQUESTS_CA_BUNDLEを作成し、’/Users/XXX/XXX/cert.pem’を指定します。
環境変数が設定されたかどうかを確認するときは
export | grep “REQUESTS”
にて確認してください。