Python SSL自签名证书报SSLCertVerificationError如何跳过验证
解决方法
你遇到的证书校验错误是Python默认SSL上下文会强制校验服务端证书的CA信任链,自签名证书不在系统可信CA列表中就会抛出该错误。仅保留加密能力、跳过证书校验只需修改客户端配置即可,同时注意修正两端端口不匹配的问题。
修改后客户端代码
import socket import ssl hostname = 'localhost' context = ssl.create_default_context() # 新增两行关闭证书校验逻辑 context.check_hostname = False context.verify_mode = ssl.CERT_NONE # 注意服务端监听端口为8443,需将原443端口改为8443 with socket.create_connection((hostname, 8443)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.version())
配置说明
context.check_hostname = False:关闭SSL握手阶段对服务端证书绑定域名的校验context.verify_mode = ssl.CERT_NONE:完全跳过服务端证书的信任链校验,仅保留TLS传输加密能力
注意:该配置仅可用于本地测试场景,生产环境禁用,关闭证书校验会导致传输存在中间人攻击风险。
服务端注意事项
服务端原有代码无需调整,仅需确认你代码中证书路径的拼写问题:原代码中写的certs/setver.crt大概率是笔误,建议核对是否为certs/server.crt,避免因证书文件路径错误导致启动失败。
内容的提问来源于stack exchange,提问作者user16712485
相关产品推荐
相关产品推荐

