InsecureRequestWarningを抑制:未検証のHTTPSリクエストがPython2.6で行われている


345

私が使用してのpython2.6でスクリプトを書いていますpyVmomiとの接続方法のいずれかを使用しています:

service_instance = connect.SmartConnect(host=args.ip,
                                        user=args.user,
                                        pwd=args.password)

次の警告が表示されます。

/usr/lib/python2.6/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)

面白いのは、私はピップでインストールurllib3を持っていないということです(それはにあります/usr/lib/python2.6/site-packages/requests/packages/urllib3/)。

私はここで提案されているように試しまし

import urllib3
...
urllib3.disable_warnings()

しかし、それは何も変わりませんでした。


あなたはこの回答に記載されている特定のモジュールのログレベルを設定してみてくださいstackoverflow.com/questions/7234262/...
レイナAbolofia

グローバルとcompletlyワーキングソリューションがあります:stackoverflow.com/questions/14463277/...
jmcollin92

2
警告:証明書の検証を無効にするのは、誰かがリモートサーバーになりすましていることを気にしない場合
ivan_pozdeev 2018

4
まあ、警告は実際に何が起こっていることを妨げるものではありません。検証を無効にするのではなく、検証の欠如に関する警告を無効にします。
dwanderson 2018年

回答:


794

PYTHONWARNINGS環境変数を使用して、Pythonの警告を無効にすることができます。この場合、以下が必要です。

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

Pythonコード(requests >= 2.16.0)の使用を無効にするには:

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

についてはrequests < 2.16.0、以下の元の回答を参照してください。

元の答え

urllib3.disable_warnings()うまくいかなかった理由は、リクエストの内部でベンダリングされたurllib3の個別のインスタンスを使用しているように見えるためです。

私はここのパスに基づいてこれを集めます: /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

リクエストのベンダーurllib3の警告を無効にするには、モジュールの特定のインスタンスをインポートする必要があります。

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

私はpyvmomiで行っている開発についてブログを書いており、2014年10月にこの問題を取り上げました。将来的に他の人が有用なpyvmomi情報を見つけられるように、このリンクを共有します。errr
Michael Rice

37
PYTHONWARNINGS="ignore:Unverified HTTPS request"
Rahul Patil、

2
完全をfrom requests.packages.urllib3.exceptions import InsecureRequestWarning
期すには

2
この回答は古くなっています。最新バージョンについては、Nayana Adassuriyaの回答を参照してください。
ダッカロン2017年

3
Nayana Adassuriyaの回答からのコピー:import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
サミュエル

117

これは2017年の答えurllib3です。requestsもう一部ではありません

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

7
年は、使用しているpythonのリビジョン番号よりも重要ではありません。
CodeMonkey 2017

3
ええ、改訂は年よりも重要です。これがためであるrequests >= 2.16.0
dwanderson

誰かがurllib3のバージョンを投稿できますが、これを試してみると、urllib3に 'disable_warnings'属性がないと表示されます
steff_bdh

1
私はこの反応に戸惑っています。私のrequestsバージョンはで2.21.0、ありますurllib32.16.0「2.16.1 , and 2.17.0 」を試してみましたが、すべて同じでしたurllib3。私が試しましたが2.4.0、それはありませんでした。彼らはそれを元に戻しましたか?
Mike Furlender

私のために働いた!
deepdive

35

パーこのgithubののコメント、1は無効にすることができurllib3介して、要求の警告をrequests1-ライナーで:

requests.packages.urllib3.disable_warnings()

ただし、これはすべての警告を抑制するだけでなくInsecureRequest(つまり、抑制もしますInsecurePlatform)します。物事を機能させたいだけの場合は、簡潔さが便利だと思います。


4
私はこの警告を抑止するために、インポートurllib3する必要はありませんので、これは2.7のための最良の選択肢である
CodeMonkey

3
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)動作するようです。
mattalxndr

29

正しい方法は、提供されたリンクの関連セクションを読んでそれが言うようにすることです。CA証明書-高度な使用法-リクエスト2.8.1のドキュメントに従って、固有の方法requests(独自ののコピーにバンドルされていますurllib3):

  • requests 独自の証明書バンドルと共に出荷されます(ただし、モジュールと一緒にのみ更新できます)
  • それは(以降使用されますrequests v2.4.0パッケージを、それがインストールされています場合は代わりにcertifi

HTTPS証明書の検証セキュリティ対策は、気軽に破棄するものではありません。中間者攻撃は、ウイルスをすり込んだり、データを改ざんしたり、盗んだりするなど第三者からの保護を防ぎます。

これは、ネットワークインフラストラクチャをターゲットとする、テーラードアクセスオペレーション中国の大ファイアウォールなど今日の政府支援のグローバルハッキングオペレーションでは、想像以上に可能性が高いです。


2.8.1とcertifi 2015.11.20.1をリクエストしても、まだ警告が表示されます。
AlexBartiş15年

3
@AlexBartişこれは、あなた(またはあなたが呼び出すいくつかのコード)がpassした場合に発生しますverify=False
ivan_pozdeev

2
この回答への投票数が少ないのはなぜですか?これらの警告を無視しても安全ですか?
sgryzko 2016年

1
@sgryzkoリモートサーバーになりすましているユーザーを気にしない場合のみ。おそらく、多くは確かに気にしない、および/または最初の答えを超えて読んでいないため、正のフィードバックサイクルに貢献しています。この回答もほぼ1年後に投稿されました。
ivan_pozdeev 2016年

2
はい、本番環境では正しいことを行う必要があります。盲目的にエラーを抑制するのは悪いことです。しかし、テスト環境でこれらのエラーを抑制したいことは完全に有効なことです。
Vroo 2017

12

せっかちな、Python未検証のHTTPS警告を無効にする簡単な方法:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

powershellの場合、コマンドは$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
Gwen Au

10

一部のパッケージベンダーがurllib3の独自のコピーである場合、受け入れられた回答は機能しません。その場合、これは引き続き機能します。

import warnings

warnings.filterwarnings('ignore', message='Unverified HTTPS request')

1

PyVmomi Clientでも同様の問題がありました。Pythonバージョン2.7.9では、この問題を次のコード行で解決しました。

default_sslContext = ssl._create_unverified_context()
self.client = \
                Client(<vcenterip>, username=<username>, password=<passwd>,
                       sslContext=default_sslContext )

これが機能するためには、少なくともPython 2.7.9が必要です。


1

なぜpyvmomi使用していない元の関数を SmartConnectNoSSL。彼らは、追加で、この機能をJune 14, 2016、それを名付けConnectNoSSL1日後、彼らはに名前を変更しSmartConnectNoSSL、プロジェクト内のコードの不要な線で警告を渡すことはなく、使用、?

SSL検証なしで指定されたサーバーに接続するための標準的な方法を提供します。自己署名証明書を使用してサーバーに接続する場合、またはSSLを完全に無視する場合に便利です。

service_instance = connect.SmartConnectNoSSL(host=args.ip,
                                             user=args.user,
                                             pwd=args.password)

0

のPython 2.7

環境変数PYTHONWARNINGSをキーとして追加し、対応する値を次のように無視します。

os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.