Python Sockets SSL:证书验证失败

2024-06-26 02:41:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用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)

你知道这里怎么了吗?在


Tags: 文件inpyssllibusrwwwline
1条回答
网友
1楼 · 发布于 2024-06-26 02:41:16

根据您的代码:

                    cert_reqs=ssl.CERT_REQUIRED,
                    ca_certs=None

documentation of wrap_socket

If the value of this parameter is not CERT_NONE, then the ca_certs parameter must point to a file of CA certificates.

实际上,您在代码中要求验证来自服务器的证书(CERT_REQUIRED),但同时指定您没有受信任的根(ca_certs=None)。但是没有可信的根证书,就无法进行验证。在

请注意,将代码改为使用CERT_NONE将是一个坏主意。它可能会起作用,因为不会进行证书验证,但它会受到中间人攻击。在

相关问题 更多 >