我需要使用 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)
我不知道该怎么办。
当我尝试连接到我的开发计算机上的本地 TCP 服务器时,我遇到了同样的问题。为我解决的问题是:
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
注意:不建议在生产环境中使用此解决方案。
如果是产品,请导入有效的 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))