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

Quickfix/go本地TLS配置:证书生成与证书错误问题排查

解决quickfix/go TLS连接的"tls: bad certificate"问题

错误根源

你的服务器证书仅用localhost作为Common Name(CN),但现代TLS协议要求证书必须包含**Subject Alternative Name(SAN)**字段来验证主机名,缺少该字段会触发验证失败,导致"bad certificate"错误。

修正后的证书生成流程

1. 配置easy-rsa支持SAN

克隆并进入easy-rsa目录后,复制默认配置模板并编辑:

git clone https://github.com/OpenVPN/easy-rsa.git example-ca
cd example-ca/easyrsa3
cp vars.example vars

打开vars文件,修改并添加以下配置(取消对应行注释并调整值):

set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "Beijing"
set_var EASYRSA_REQ_CITY        "Beijing"
set_var EASYRSA_REQ_ORG         "YourOrg"
set_var EASYRSA_REQ_EMAIL       "admin@youorg.com"
set_var EASYRSA_REQ_OU          "FIXTesting"
# 启用SAN并指定本地测试的主机名/IP
set_var EASYRSA_ALT_NAME       "DNS:localhost,DNS:127.0.0.1"
set_var EASYRSA_SAN_ENABLE     "yes"

2. 重新初始化PKI与CA

./easyrsa init-pki
./easyrsa build-ca nopass  # 测试环境无需CA密码

3. 生成合规的服务器证书

./easyrsa build-server-full localhost nopass

此时生成的localhost.crt会包含DNS:localhost和DNS:127.0.0.1的SAN字段,满足TLS主机名验证要求。

4. 生成客户端证书

./easyrsa build-client-full client0 nopass

5. 提取证书文件

从以下路径复制所需文件到你的配置指定目录:

  • 服务器证书/密钥:pki/issued/localhost.crt、pki/private/localhost.key
  • 客户端证书/密钥:pki/issued/client0.crt、pki/private/client0.key
  • CA根证书:pki/ca.crt

验证证书有效性

执行以下命令检查服务器证书的SAN字段:

openssl x509 -in localhost.crt -text -noout | grep -A 3 "Subject Alternative Name"

输出需包含DNS:localhost, DNS:127.0.0.1,确认SAN配置生效。

同时确保所有证书文件权限正常,程序可读取(避免因权限问题导致证书加载失败)。

重新测试连接

替换原有证书后,重启quickfix/go的执行端与发起端,TLS握手即可正常完成,不再出现"tls: bad certificate"错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:53:12