ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败Python

2024-06-16 10:43:23 发布

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

我想用SSL连接到IRC。我用Python 2.7来写。但是,对于以下代码:

HOST = 'chat.freenode.net'
PORT = 7000
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
code = sock.connect_ex((HOST, PORT))
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('COMODOECCCertificationAuthority.crt')
secure_sock = context.wrap_socket(sock)

PyCharm在secure_sock = context.wrap_socket(sock)行中显示错误,怎么了?在


Tags: 代码hostsslnetportirccontextchat
1条回答
网友
1楼 · 发布于 2024-06-16 10:43:23

context.load_verify_locations('COMODOECCCertificationAuthority.crt')

我不知道文件COMODOECCCertificationAuthority.crt中有什么内容,但看起来您希望得到一个由Comodo签名的证书。但是,证书的签发人chat.freenode.net让我们加密而不是密码。例如,你可以用

$ openssl s_client -connect chat.freenode.net:7000
...
Certificate chain
0 s:/CN=cherryh.freenode.net
  i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
  i:/O=Digital Signature Trust Co./CN=DST Root CA X3

这意味着您需要信任的根CA是“DST root CA X3”。您可以下载此CA的证书here。如果您在load_verify_locations中将其添加为trusted,则可以正常工作。在

相关问题 更多 >