Python SSL 错误:证书验证失败

问题描述 投票:0回答:2

我需要使用 Python 设置 TLS 连接,但遇到 SSL 认证错误。 这是我的代码:

import socket
import ssl
import json

from ArgumentParser import Parser

argParser = Parser() # just handles command line arg parsing

clientSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
clientSock = context.wrap_socket(
  sock=clientSock,
  server_hostname=argParser.hostName,
)

clientSock.connect((argParser.hostName, argParser.portNum))

但是,我不断收到此错误:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)

我不知道该怎么办。

python ssl network-programming tls1.2
2个回答
0
投票

当我尝试连接到我的开发计算机上的本地 TCP 服务器时,我遇到了同样的问题。为我解决的问题是:

context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE

注意:不建议在生产环境中使用此解决方案。


-1
投票

如果是产品,请导入有效的 CA 证书。但是在开发中你可以使用 context.verify_mode = ssl.CERT_NONE

import socket
import ssl
import json

from ArgumentParser import Parser

argParser = Parser() # just handles command line arg parsing

clientSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.verify_mode = ssl.CERT_NONE
clientSock = context.wrap_socket(
  sock=clientSock,
  server_hostname=argParser.hostName,
)

clientSock.connect((argParser.hostName, argParser.portNum))
© www.soinside.com 2019 - 2024. All rights reserved.