OpenSSL执行CMS验证时报自签名证书错误的问题求助
报错根因
- 签名使用的
certificate.crt是自生成的自签名证书,不在OpenSSL默认信任的根证书列表内,验证时会触发信任校验失败 - 验证命令中
-signer参数指定的user.pem与签名时使用的certificate.crt不匹配,也会导致证书校验不通过
解决方法
测试场景快速验证
如果仅做自签名证书的签名功能测试,不需要完整信任链校验,执行以下命令即可:
openssl cms -verify -in OutMessage.txt -signer certificate.crt -out signedtext.txt -noverify
参数说明:
- 将
-signer后的文件替换为签名时实际使用的certificate.crt,保证两端证书一致 - 新增
-noverify参数,跳过证书的根信任链校验,仅验证签名本身的有效性
完整信任链校验场景
如果需要走标准的完整信任校验流程,可将certificate.crt加入当前操作系统的受信任根证书库,再执行不带-noverify参数的验证命令即可,该方案不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者Alok
相关产品推荐
相关产品推荐

