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

自签名证书验证报错:certificate signature failure 求助排查

问题描述

我参照微软Azure应用网关自签名证书文档执行以下命令生成证书:

  • openssl ecparam -out inboundkey.key -name prime256v1 -genkey
  • openssl req -new -sha256 -key inboundkey.key -out rootcsr.csr
  • openssl x509 -req -sha256 -days 365 -in rootcsr.csr -signkey inboundkey.key -out rootCA.crt
  • openssl ecparam -out key.key -name prime256v1 -genkey
  • openssl req -new -sha256 -key key.key -out csr.csr
  • openssl x509 -req -in csr.csr -CA rootCA.crt -CAkey inboundkey.key -CAcreateserial -out certificate.crt -days 365 -sha256

运行命令openssl s_client -connect localhost:443 -servername [DOMAIN] -showcerts -CAfile ./rootCA.crt时,出现如下报错:

depth=1 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd
verify return:1

depth=0 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd, CN = mydomain.com
verify error:num=7:certificate signature failure
verify return:1

depth=0 C = AU, ST = Some-State, O = Internet Widgits Pty Ltd, CN = mydomain.com
verify return:1

执行openssl verify -no-CAfile -no-CApath -trusted rootCA.crt certificate.crt时,返回certificate.crt: OK。生成证书时我仅填写了FQDN和邮箱地址,未提供其他信息,请问哪里操作有误?

问题分析与解决

问题根源

第6步签发服务器证书时,未显式指定签名算法-sha256,导致OpenSSL默认使用的签名算法与EC密钥(prime256v1)不兼容,触发了s_client的签名验证失败。openssl verify命令的校验逻辑相对宽松,因此未检测出该问题。

修正方案

修改第6步的命令,添加-sha256参数,确保签名算法与根CA保持一致:

openssl x509 -req -in csr.csr -CA rootCA.crt -CAkey inboundkey.key -CAcreateserial -out certificate.crt -days 365 -sha256

重新生成certificate.crt后,再次执行s_client命令即可通过验证。

额外建议:生成根CA和服务器证书时,尽量保持所有标识字段(如国家、州、组织)一致,避免后续出现不必要的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:48:20