我尝试使用pythonsockets向域注册器发出可扩展配置协议(EPP)请求,域注册器只接受ssl上的请求。在
证书文件:www.myDomain.se.crt 密钥文件:我的域名.pem在
openssl s_client -connect epptestv3.iis.se:700 -cert www.myDomain.se.crt -key mydomain.pem
当我尝试使用openssl客户机发出请求时,我成功地从注册商那里得到了问候响应,但是当我在python中使用以下代码时,我得到了ssl证书错误。在
^{pr2}$执行脚本后,我得到以下错误:
Traceback (most recent call last):
File "server_connect.py", line 54, in <module>
ca_certs=ssl_keyfile
File "/usr/lib/python2.7/ssl.py", line 933, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 601, in __init__
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
你知道这里怎么了吗?在
根据您的代码:
从documentation of wrap_socket:
实际上,您在代码中要求验证来自服务器的证书(
CERT_REQUIRED
),但同时指定您没有受信任的根(ca_certs=None
)。但是没有可信的根证书,就无法进行验证。在请注意,将代码改为使用
CERT_NONE
将是一个坏主意。它可能会起作用,因为不会进行证书验证,但它会受到中间人攻击。在相关问题 更多 >
编程相关推荐