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

如何修复Twisted框架中的OpenSSL.SSL.Error证书验证失败问题?

解决Twisted TLS客户端认证证书验证失败问题

核心排查方向:自签名证书信任链与Twisted配置

1. 显式让客户端信任自签名CA证书

Twisted客户端默认不会信任自签名证书,必须在代码里明确加载并指定信任的CA证书:

from twisted.internet import ssl
from OpenSSL import crypto

# 加载生成自签名时的CA根证书
ca_cert = crypto.load_certificate(crypto.FILETYPE_PEM, open("ca.crt").read())
certificate_options = ssl.CertificateOptions(
    verify=True,
    caCerts=[ca_cert],
    # 若服务器证书由该CA签发,需确保验证服务器CN字段
    verifyOnce=False
)

如果你的服务器证书是直接自签名(无CA层级),客户端需要加载服务器证书作为信任的CA证书。

2. 校验自签名证书生成流程

重新确认证书生成步骤是否符合Twisted TLS要求:

  • 生成CA证书时,必须开启CA扩展权限,命令示例:
    openssl req -new -x509 -days 365 -keyout ca.key -out ca.crt -subj "/CN=MyCA" -extensions v3_ca -config <(cat /etc/ssl/openssl.cnf <(printf "\n[v3_ca]\nbasicConstraints = CA:TRUE"))
    
  • 生成服务器证书时,必须添加subjectAltName(包含服务器IP或域名,客户端用IP连接时必须加IP):
    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -extensions usr_cert -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1")
    
  • 客户端证书需确保SAN字段正确,且服务器端已开启requireClientCert=True。

3. 修正PyCharm环境的OpenSSL路径冲突

MacOS Ventura自带的OpenSSL与brew安装的版本可能存在路径冲突,需在PyCharm中手动指定环境变量:

  1. 打开Run/Debug Configurations
  2. 在Environment variables中添加:
    • OPENSSL_CONF=/usr/local/etc/openssl@3/openssl.cnf(根据brew安装的版本调整路径,如@1.1)
    • PATH=/usr/local/opt/openssl@3/bin:$PATH
  3. 重启PyCharm后重新运行客户端

4. 服务器端客户端认证配置校验

确保服务器端正确加载CA证书以验证客户端,示例代码:

from twisted.internet import ssl

ca_cert = ssl.Certificate.loadPEM(open("ca.crt").read())
certificate_options = ssl.CertificateOptions(
    privateKey=open("server.key").read(),
    certificate=open("server.crt").read(),
    requireClientCert=True,
    caCerts=[ca_cert.original]
)

临时调试方案(生产环境禁止)

若仅需临时验证功能,可在客户端关闭证书验证(会绕过安全检查):

certificate_options = ssl.CertificateOptions(verify=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:42:12