Отключите проверку SSL в M2Crypto в Python
Есть ли способ отключить проверку SSL, чтобы исключения WrongHost не генерировались при использовании SOAPpy в python.
2 ответа
Вы можете отключить все проверки сертификатов в M2Crypto следующим образом:
from M2Crypto import SSL, httpslib
context = SSL.Context("sslv3")
# Disable certificate checking
context.set_verify(0, depth = 0)
connection = httpslib.HTTPSConnection("somehostname", 443, ssl_context=context)
# Hack (!!!) for disabling host name check <CN> == <expected host name>.
# Will affect any future SSL connections made by M2Crypto!
SSL.Connection.postConnectionCheck = None
connection.connect() # <-- this would normally raise SSL verification errors
connection.request("GET", "/")
...
Я надеюсь, вы знаете, что это по существу отключит безопасность для любого SSL-соединения, созданного с помощью M2Crypto. Так что это вообще не рекомендуется, за исключением случаев, когда вы общаетесь только с одним сервером и считаете, что риск "человек посередине" более приемлем, чем использование незашифрованного HTTP.
Что касается решения M2Crypto, но, поскольку ваш вопрос (в отличие от вашего заголовка) запрашивает SOAPpy (который я еще не использовал), решение может быть другим, поскольку в конфигурации SOAPpy, похоже, используется socket
модуль вместо M2Crypto.SSL
(см. строку 132). Я не знаю, как предотвратить socket.ssl
модуль для проверки имен хостов.
Расширяя ответ AndiDog, вы можете установить postConnectionCheck для каждого отдельного экземпляра, и в версии 0.21.1 (как минимум) M2Crypto есть Connect.set_post_connection_check_callback()
способ сделать это:
sslsock = M2Crypto.SSL.Connection(sslcontext)
# Disable checking of server certificates
sslsock.set_post_connection_check_callback(None)
Обратите внимание, что отключается как проверка подключенных к серверам, так и принятых клиентов (последний по умолчанию отключен).
Параметр, если не None, является функцией, которая принимает сертификат и адрес, то есть:
check(self.get_peer_cert(), self.addr[0])
Для справки см. Источник M2Crypto.