web-dev-qa-db-ja.com

InsecureRequestWarningを抑制:Python2.6で未確認のHTTPSリクエストが行われています

私は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)

おもしろいことに、私はpllと一緒にurllib3をインストールしていないということです(しかし、 /usr/lib/python2.6/site-packages/requests/packages/urllib3/ にあります)。

私は提案されたように試みました ここ

import urllib3
...
urllib3.disable_warnings()

しかしそれは何も変わらなかった。

232
Patryk

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)
582
shazow

これは2017年の回答です。urllib3requestsの一部ではなくなりました

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

正しい方法は 提供されたlink の関連セクションを読み、それを言うようにすることです。 CA証明書 - 高度な使用法 - 要求)に従って、requestsurllib3の独自のコピーにバンドルされる)に特有の方法です。 2.8.1ドキュメンテーション

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

HTTPS証明書検証のセキュリティ対策は、気軽に捨てられるものではありません。それが防止する中間者攻撃は第三者からあなたを保護します。 ウイルスを飲み込む、データを改ざんする、または{盗む _。

これは、政府が後押ししている Tailored Access Operations および Great Great China) のようなネットワークインフラストラクチャをターゲットとしたグローバルハッキング操作では、予想以上に起こりやすいものです。

26
ivan_pozdeev

このgithub コメントに従って、1ライナーのrequestsを介してurllib3リクエスト警告を無効にすることができます。

requests.packages.urllib3.disable_warnings()

ただし、これはInsecureRequestだけでなく、 all warningsを抑制します(つまり、InsecurePlatformなども抑制します)。作業をしたいだけの場合は、簡潔さが便利です。

23
hamx0r

せっかちな人には、pythonの未確認HTTPS警告を無効にする簡単な方法:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"
8
Wenbing Li

Pyvmomi 元の関数SmartConnectNoSSLを使用しない理由。彼らは 追加June 14, 2016でこの関数に名前を付けてConnectNoSSLと名付け、 1日後 名前をSmartConnectNoSSLに変更し、代わりにそれを使用するプロジェクト内の不要なコード行で警告を渡すことで?

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

service_instance = connect.SmartConnectNoSSL(Host=args.ip,
                                             user=args.user,
                                             pwd=args.password)
1
SpazaM

Python 2.7

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

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

1
Imran Al Noor

PyVmomiクライアントでも同様の問題がありました。 Python Version 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
Rajive Pai

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

import warnings

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