11

警告が表示されます:

/.../local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
  InsecureRequestWarning)

私はドキュメントを読んでいます。

こののように、自分が何をしているのかわかっている場合に無効にする方法についての投稿をたくさん見ています。

しかし、エラーの意味を理解するのにまだ苦労しています。証明書が不足していることを意味していると私は収集します (同じバージョンのスクリプトを実行している Mac ではなく、VPS でのみ発生するため) が、安全な要求を行うために証明書が必要な理由がわかりませんサードパーティの API に

無効にするかどうかを決定できるように、役立つ要約(または正しい方向への単なるポイント)をいただければ幸いです。私の直感では、無効にするべきではないので、問題に適切に対処する方法を見つけたいと思います.

4

1 に答える 1

21

単純に警告を無効にしなかったことを嬉しく思います。実際、素晴らしい質問です。ここで必要なのは、「信頼の連鎖」がどのように機能するかについての基本的な理解です。それは残念なことではありません。多くの人はこれについての知識を持っていません。ただし、開発者として基本を知っておく必要があります。先に進み、全体がどのように機能するかについて読んでください。

つまり、TLS は機密性、信頼性、完全性を保証することを目的としています。セキュリティ コミュニティの常識は (*):中間者攻撃に対して脆弱であるため、証明書の検証がなければ、これら 3 つの項目のいずれも得られません。つまり、証明書を確認するか、HTTPS の使用を停止することもできます。それが警告の内容です。

もう少しコンテキスト: このセキュリティ アーキテクチャの一部は、リモート ホストが、信頼チェーンの上位にある誰か、いわゆる認証局(CA)によって署名された証明書を持っていると主張することです。クライアントは、この CA が問題の証明書に実際に署名したことを確認する必要があります。この検証が機能するためには、クライアントは多くの CA の公開鍵を含むローカル データベースを必要とします (これらを「トラスト アンカー」と考えてください。そのコレクションは「証明書バンドル」と呼ばれます)。

サードパーティ API に対して安全なリクエストを行うために証明書が必要な理由がわかりません

詳細については、別の場所でお読みください。ただし、この回答を完全にするために、これは高レベルの抽象化であり、外部の情報源が必要な理由を明確にする必要があります。

  • クライアントはリモート エンドを信頼していません。
  • そのため、クライアントは第三者を巻き込んで、リモート エンドの信頼性について尋ねる必要があります。
  • そのサードパーティは、多くの CA の公開鍵のローカル データベース、いわゆる「証明書バンドル」です。

urllib3 の代わりにライブラリを使用できますrequests。デフォルトで証明書の検証が実行されます (独自の CA データベースが付属しています)。

(*) 検証されていない HTTPS 接続、プレーンな HTTP よりも「優れている」場合がありますが、これはケースバイケースで評価する必要があります。

于 2015-02-09T14:43:15.273 に答える