You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python建立TLS连接时遭遇SSL证书验证失败求助

解决Python TLS连接中的SSL证书验证错误

错误原因

ssl.SSLCertVerificationError 出现的核心原因是Python的SSL上下文无法找到可信的根证书,完成服务器证书的链验证。可能是系统默认根证书未被正确加载,或者服务器使用的是自签名/私有CA签发的证书。

解决方案

1. 加载系统默认根证书

大多数场景下,显式加载系统默认的服务器验证根证书即可解决问题:

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.load_default_certs(purpose=ssl.Purpose.SERVER_AUTH)
clientSock = context.wrap_socket(
  sock=clientSock,
  server_hostname=argParser.hostName,
)

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

2. 使用自定义CA证书(针对自签名/私有CA场景)

如果服务器证书由私有CA或自签名生成,需要将CA证书文件加载到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)
# 替换为你的CA证书实际路径
context.load_verify_locations('/path/to/your/ca-certificate.crt')
clientSock = context.wrap_socket(
  sock=clientSock,
  server_hostname=argParser.hostName,
)

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

3. 临时跳过验证(仅测试环境使用)

警告:此操作会关闭证书验证与主机名检查,存在严重安全风险,绝对禁止在生产环境使用

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.check_hostname = False
context.verify_mode = ssl.CERT_NONE
clientSock = context.wrap_socket(
  sock=clientSock,
  server_hostname=argParser.hostName,
)

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

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:47:13