PythonリクエストがSSLErrorをスローする 質問する

PythonリクエストがSSLErrorをスローする 質問する

私は、CAS、jspring セキュリティ チェック、リダイレクトなどを含む簡単なスクリプトを作成中です。Kenneth Reitz の Python リクエストは素晴らしい作品なので、これを使用したいと思います。ただし、CAS は SSL 経由で検証される必要があるため、まずその手順を経る必要があります。Python リクエストが何を求めているのかわかりません。この SSL 証明書はどこに保存されるのでしょうか。

Traceback (most recent call last):
  File "./test.py", line 24, in <module>
  response = requests.get(url1, headers=headers)
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 52, in get
  File "build/bdist.linux-x86_64/egg/requests/api.py", line 40, in request
  File "build/bdist.linux-x86_64/egg/requests/sessions.py", line 209, in request 
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 624, in send
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 300, in _build_response
  File "build/bdist.linux-x86_64/egg/requests/models.py", line 611, in send
requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

ベストアンサー1

発生している問題は、信頼されていない SSL 証明書によって発生しています。

@dirk が前のコメントで述べたように、最も簡単な修正方法は設定することですverify=False:

requests.get('https://example.com', verify=False)

これにより、証明書が検証されなくなることに注意してください。これにより、アプリケーションが中間者攻撃などのセキュリティ リスクにさらされることになります。

もちろん、判断は必要です。コメントで述べたように、これは簡単な使い捨てのアプリケーションやスクリプトには適しているかもしれませんが、実稼働ソフトウェアには使用すべきではありません

特定のコンテキストで証明書のチェックをスキップすることが受け入れられない場合は、次のオプションを検討してください。最善のオプションは、パラメータを証明書のverifyファイルへのパスである文字列に設定することです.pem(証明書は、何らかの安全な手段で取得する必要があります)。

したがって、バージョン 2.0 以降、verifyパラメータはそれぞれのセマンティクスとともに次の値を受け入れます。

  • True: 証明書をライブラリの独自の信頼された証明機関に対して検証します (注: 要求から抽出された RC の信頼データベースである Certifi ライブラリを介して、要求が使用するルート証明書を確認できます。Certifi - 人間のための信頼データベース)。
  • False: 証明書の検証を完全にバイパスします。
  • 証明書の検証に使用するリクエストの CA_BUNDLE ファイルへのパス。

ソース:リクエスト - SSL 証明書の検証

cert同じリンクのパラメータも確認してください。

おすすめ記事