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

Nginx配置双向SSL后客户端证书不受信任问题求助

解决Nginx双向SSL客户端证书验证错误(27:certificate not trusted)

看起来你踩了双向SSL里一个常见的误区:把服务器域名证书直接当作客户端证书来使用,这也是导致证书不被信任的核心原因。咱们一步步拆解问题,帮你搞定:

核心问题:服务器证书≠客户端证书

服务器证书的设计目的是让客户端验证服务器身份,它的**密钥用法(Key Usage)和扩展密钥用法(Extended Key Usage)**通常只包含serverAuth(服务器认证)权限,完全不具备clientAuth(客户端身份认证)的能力。Nginx在验证客户端证书时,会检查证书是否具备客户端认证的用途,不满足的话直接判定为不被信任。

具体排查与解决步骤

1. 先确认你的服务器证书是否支持客户端认证

用这条命令查看证书的详细信息:

openssl x509 -in web_in.crt -text -noout

找到X509v3 Key Usage和X509v3 Extended Key Usage字段,如果里面没有clientAuth,那这个证书根本不能用作客户端证书,必须重新生成符合要求的客户端证书。

2. 验证Nginx的CA Bundle配置正确性

你配置的ssl_client_certificate /root/certs/web_in.crt.bundle是用来验证客户端证书的信任链,先确认这个bundle能正常验证你的服务器证书:

openssl verify -CAfile /root/certs/web_in.crt.bundle web_in.crt

如果返回web_in.crt: OK,说明CA bundle本身没问题,问题还是出在证书用途上。

3. 临时调整Nginx配置辅助排查

把ssl_verify_client on改成ssl_verify_client optional,然后在你的location块里加一个响应头,用来查看验证结果:

add_header X-Client-Verify $ssl_client_verify;

访问后查看响应头,如果显示FAILED:untrusted,就坐实了证书用途或信任链的问题(这里大概率是用途)。

4. 生成符合要求的测试客户端证书

如果只是测试双向SSL,推荐用你的CA签发一个专门的客户端证书,步骤如下:

  1. 生成客户端私钥和CSR:
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/CN=test-client"
  1. 准备OpenSSL扩展配置(创建一个client_ext.conf文件):
[v3_client]
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = clientAuth
  1. 用你的CA签名客户端证书:
openssl x509 -req -in client.csr -CA /root/certs/rootCA.crt -CAkey /root/certs/rootCA.key -CAcreateserial -out client.crt -days 365 -extensions v3_client -extfile client_ext.conf
  1. 转成PFX格式导入Chrome:
openssl pkcs12 -export -out client.pfx -inkey client.key -in client.crt -certfile /root/certs/web_in.crt.bundle

把这个PFX导入Chrome的「个人」证书存储,再访问你的域名,应该就能通过Nginx的客户端证书验证了。

5. 额外检查:Chrome证书导入是否正确

确保导入PFX时,证书被放在「个人」存储区,而对应的CA证书(你的中级+根CA)已经在Chrome的「受信任的根证书颁发机构」里,避免客户端侧出现信任问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:39:48