PythonでAPIを呼び出す際に、SSL: CERTIFICATE_VERIFY_FAILEDエラーが発生することがあります。このエラーは、SSL証明書の検証に失敗した場合に発生します。以下に、この問題の原因と対処法について説明します。

原因

このエラーは、Pythonのrequestsライブラリを使用してHTTPSのエンドポイントにAPIコールを行った際に発生します。具体的には、以下のようなエラーメッセージが表示されます。

requests.exceptions.SSLError: HTTPSConnectionPool(host='example.com', port=443): Max retries exceeded with url: /exampleapi (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)'),))

このエラーの主な原因は、システムがRoot認証局の証明書については持っているが、中間認証局の証明書を持っていない場合です。

対策

この問題に対する対策は、中間認証局の証明書を渡すことです。具体的には、以下の2つの方法があります。

  1. verifyにRoot認証局の証明書と中間認証局の証明書のあるフォルダパスを渡す。
requests.get('https://example.com/someapi', verify='/etc/ssl/certs')
  1. 中間認証局の証明書を含めた、単一の証明書ファイルを更新する。
requests.get('https://example.com/someapi', verify='/etc/ssl/certs/ca-certificates.crt')

以上の方法で、SSL: CERTIFICATE_VERIFY_FAILEDエラーを解決することができます。ただし、これらの方法はセキュリティ上のリスクを伴う可能性があるため、適切な対策を講じることが重要です。

参考文献

投稿者 admin

コメントを残す

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