私は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()
しかしそれは何も変わらなかった。
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)
これは2017年の回答です。urllib3
はrequests
の一部ではなくなりました
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
正しい方法は 提供されたlink の関連セクションを読み、それを言うようにすることです。 CA証明書 - 高度な使用法 - 要求)に従って、requests
(urllib3
の独自のコピーにバンドルされる)に特有の方法です。 2.8.1ドキュメンテーション :
requests
には独自の証明書バンドルが同梱されています(ただし、モジュールと一緒にしか更新できません)。requests
v2.4.0
以降) インストールされている場合は代わりにcertifi
パッケージ を使用しますHTTPS証明書検証のセキュリティ対策は、気軽に捨てられるものではありません。それが防止する中間者攻撃は第三者からあなたを保護します。 ウイルスを飲み込む、データを改ざんする、または{盗む _。
これは、政府が後押ししている Tailored Access Operations および Great Great China) のようなネットワークインフラストラクチャをターゲットとしたグローバルハッキング操作では、予想以上に起こりやすいものです。
このgithub コメントに従って、1ライナーのrequests
を介してurllib3
リクエスト警告を無効にすることができます。
requests.packages.urllib3.disable_warnings()
ただし、これはInsecureRequest
だけでなく、 all warningsを抑制します(つまり、InsecurePlatform
なども抑制します)。作業をしたいだけの場合は、簡潔さが便利です。
せっかちな人には、pythonの未確認HTTPS警告を無効にする簡単な方法:
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
Pyvmomi 元の関数SmartConnectNoSSL
を使用しない理由。彼らは 追加June 14, 2016
でこの関数に名前を付けてConnectNoSSL
と名付け、 1日後 名前をSmartConnectNoSSL
に変更し、代わりにそれを使用するプロジェクト内の不要なコード行で警告を渡すことで?
SSL検証なしで指定されたサーバーに接続するための標準的な方法を提供します。自己署名証明書を使用してサーバーに接続する場合、またはSSLを完全に無視する場合に便利です。
service_instance = connect.SmartConnectNoSSL(Host=args.ip,
user=args.user,
pwd=args.password)
Python 2.7 用
環境変数PYTHONWARNINGSをキーとして追加し、対応する値を次のように無視します。
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"
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が必要です。
一部のパッケージベンダーが独自のurllib3のコピーである場合、受け入れられた答えは機能しません。その場合、これは引き続き機能します。
import warnings
warnings.filterwarnings('ignore', message='Unverified HTTPS request')