Pythonを使用していると、特にMacOSでssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
というエラーに遭遇することがあります。このエラーは、PythonがHTTPS接続を必要とする多くの操作で発生します。これには、pip install
コマンドやhttp.client.HTTPSConnection
の使用、またはこれらを内部で使用するモジュールやアプリケーションが含まれます。
このエラーの原因は、Pythonが公式のPython pkgインストーラからインストールされ、内部バージョンのOpenSSLを使用し、ルート証明書が含まれていないためです。したがって、SSL接続を使用するものはすべてこのエラーを引き起こします。
この問題を解決するための一般的な方法は、Pythonインストーラを実行したときに表示される情報に従うことです。具体的には、Applications/Python 3.6
に移動し、Install Certificates.command
をダブルクリックします。これにより、Pythonのバグトラッカーで報告されているこの問題が解決します。
ただし、この方法が機能しない場合や、Pythonがアプリケーションフォルダにない場合もあります。その場合、PythonをHomebrewやpyenvを通じてインストールした可能性があります。
また、プロキシ環境下でPythonのrequests
ライブラリを使用していると、同様のssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)
エラーが発生することがあります。このエラーは、HTTPSリクエストのSSL証明書の検証(SSL Cert Verification)に失敗したために生じます。
この問題を解決するための一般的な方法は、サーバー証明書の検証を行わない設定にするか、プロキシサーバの証明書をクライアント側で設定することです。ただし、これらの方法はセキュリティ上のリスクを伴う可能性があるため、注意が必要です。
以上の情報を参考に、PythonでSSLエラーに遭遇したときの対処法を理解していただければと思います。