如何在pysimplesoap中忽略SSL证书验证

3
我正在尝试使用pysimplesoap和python 2.7.9访问一个使用自生成证书的Web服务。
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个回答

2
在这里回答自己的问题,添加第一和第三行将忽略认证验证。
import ssl 
from pysimplesoap.client import SoapClient 
ssl._create_default_https_context = ssl._create_unverified_context 

这里有一篇更详细的讨论 (链接),你可以从中了解到为什么这不是一个好主意……


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接