Pythonを使用していると、特にmacOSでよく遭遇するエラーの一つにssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)があります。このエラーは、PythonがSSL接続を行う際に証明書の検証に失敗したことを示しています。

原因

Python 3.6以降のmacOSでは、Pythonはシステムの証明書ストアを使用せずにOpenSSLの組み込みバージョンを使用します。そのため、公式のPythonパッケージインストーラからPythonをインストールした場合、内部バージョンのOpenSSLを使用し、ルート証明書が含まれていません。

解決策

証明書のインストール

Pythonのインストーラを実行すると、この情報が表示されます。また、/Applications/Python 3.6/ReadMe.rtfにも記載されていますが、見落とされやすいです。Applications/Python 3.6に移動し、Install Certificates.commandをダブルクリックすることで証明書をインストールできます。

プロキシ環境下での対処法

プロキシを介して通信を行う場合、プロキシサーバーの証明書を検証する必要があります。プロキシサーバーは組織内でのみ使用されるため、自己署名証明書(上位の認証局が自分自身)が含まれている場合があります。自己署名証明書は信頼できない証明書(=クライアント側で元々信頼すると設定していない証明書)であるため、SSLErrorが発生します。

解決策としては、証明書の検証を行わない設定にするか、プロキシサーバーの証明書をクライアント側で設定する方法があります。ただし、証明書の検証を行わない設定はセキュリティ的に問題があるため、手元の検証作業などの時にのみ使用することをお勧めします。

以上が、Pythonで発生するSSL証明書検証エラーの原因と対処法になります。この情報が皆さんの問題解決の一助となれば幸いです。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です