Как игнорировать проверку SSL-сертификата в pysimplesoap
Я пытаюсь получить доступ к веб-сервису, который использует самогенерируемый сертификат, используя pysimplesoap и python 2.7.9
from pysimplesoap.client import SoapClient
import base64
username = 'webuser'
password = 'webpassword'
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
# real address / login removed
client = SoapClient(wsdl='https://url:port/webservice.asmx?WSDL',
http_headers={'Authorization': 'Basic %s'%base64string}, sessions=True,
cacert=None)
response = client.StatusInfo(... removed ...)
print(response)
Попытка этого выдает сообщение об ошибке
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
Существуют советы о том, как обойти проблему путем исправления urllib2, но есть ли более простой способ, который позволяет мне сказать pysimplesoap игнорировать все ошибки на стороне клиента SSL-сертификата. Я использую Windows7 и планирую перенести код на Raspian/Debian Linux, поэтому решение не должно зависеть от операционной системы.
1 ответ
Решение
Отвечая на мой собственный вопрос здесь, добавление 1-й и 3-й строки будет игнорировать проверку сертификации
import ssl
from pysimplesoap.client import SoapClient
ssl._create_default_https_context = ssl._create_unverified_context
Здесь есть более длительная дискуссия, где вы можете узнать, почему это не очень хорошая идея...