Python

Pythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合の対処方法

Pythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合の対処方法

Pythonで CERTIFICATE_VERIFY_FAILED が出てWEBページが取得できない


Pythonで requests.get を使っていると、このようなエラーが出ることがある。

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

メッセージからわかるようにサーバー証明書の検証に失敗している。

セキュリティ的にはこのようなサイトにはアクセスするべきではない

しかし通信先が正規のサイトだとわかっている場合は、それでも requests.get でアクセスしたいこともあるだろう。

そこで今回はPythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合の対処方法について紹介する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。

記事を読むメリット

Pythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合の対処方法がわかり、SSLエラーが出ても対処できるようになる


Pythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合の対処方法

Pythonのrequests.getで「SSL: CERTIFICATE_VERIFY_FAILED」になる場合に、それでもどうしてもアクセスしたいときは検証をしないという方法がある。


通常は以下のように requests.get を使っていると思う。

response = requests.get(url)

これを以下のように verify=False を追加する。

response = requests.get(url=url, verify=False)

これでサーバー証明書の検証は行わないので、「SSL: CERTIFICATE_VERIFY_FAILED」が発生することは無い。


サーバー証明書の検証をしないのはセキュリティ的に良くない

「SSL: CERTIFICATE_VERIFY_FAILED」を避ける方法として検証をしない方法を挙げたが、冒頭で述べたように本来はアクセスすべきではない

サーバー証明書の検証でエラーになるということは、サーバー証明書が無効であったり有効期限が切れていたりしているので、信頼できる状態ではない

アクセス先のWEBサイトの管理者も自分なのであれば、サーバー証明書の更新をした方がいい

自分が管理しているサイトでないなら、業務でアクセスしたり、業務システムのダータ収集元として採用するのもやめた方がいいだろう


アクセスするとしても、あくまで自分で責任を取ることができる私的な活動に留めておくことのがよいと思う。

信頼できないサイトですから、最悪の場合はサイトが改ざんされていて、アクセスしたユーザーの情報を記録されたり、不正なファイルをダウンロードさせられるかもしれないですからね。

ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-Python
-

© 2024 ITips