web-dev-qa-db-ja.com

Python 3 urllibはSSL証明書の検証を無視します

自己署名証明書を使用したテスト用のサーバーセットアップがあり、それに向けてテストできるようにしたいと考えています。

Python 3バージョンのurlopenでSSL検証を無視する方法

これに関して私が見つけたすべての情報は、_urllib2_またはPython 2全般に関するものです。

urllib in python 3は_urllib2_から変更されました:

Python 2、urllib2urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])

https://docs.python.org/2/library/urllib2.html#urllib2.urlopen

Python 3urllib.request.urlopen(url[, data][, timeout])https://docs.python.org/3.0/library/urllib.request。 html?highlight = urllib#urllib.request.urlopen

だから、これはPython 2で次のようにできることを知っている。しかしPython 3 urlopenにはコンテキストパラメータが欠けている。

_import urllib2
import ssl

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

urllib2.urlopen("https://your-test-server.local", context=ctx)
_

そして、はい、これは悪い考えです。これは、プライベートサーバーでのテストのみを目的としています。

Python 3ドキュメント、または他の質問でこれがどのように行われるべきかを見つけることができませんでした。Python 3、 urllib2/Python 2のソリューションがありました。

15
Joakim

Python 3.0から3.3にはコンテキストパラメータがありません。Python 3.4で追加されました。したがって、Pythonバージョンを 3.5 コンテキストを使用します。

5
Muhammad Tahir