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

OpenSSL自签名证书SMIME验签失败问题排查

自签名证书SMIME验签失败的问题排查与解决

核心问题分析

你的操作流程存在两个关键错误:

  1. 证书文件命名混淆
    openssl req -x509 生成的是自签名证书,而非CSR(证书签名请求)。你将其命名为ca.csr,虽然文件内容本身是有效的证书,但这种命名会混淆概念,且可能在后续操作中引发参数误解。

  2. 验签命令参数错误
    验签时使用的-signer参数作用是将验证通过的签名者证书输出到指定文件,而非指定用于验证的证书。你重复指定ca.csr作为该参数的值,会导致OpenSSL混淆输入输出文件,最终引发摘要验证失败(digest failure)。

修正后的完整操作流程

# 创建RSA私钥
openssl genrsa -out private.key 2048

# 生成自签名证书(正确命名为ca.crt,避免与CSR混淆)
openssl req -x509 -days 3650 -key private.key -out ca.crt

# 生成文本消息
echo 'hello' > text

# 签名文本(-signer指定正确的证书文件)
openssl smime -sign -inkey private.key -signer ca.crt -in text -outform PEM -out signature

# 验签(无需额外指定证书文件,-noverify跳过自签名证书的信任链验证)
openssl smime -verify -noverify -content text -in signature

补充说明

  • 签名时-signer参数会将证书嵌入到signature文件中,验签时OpenSSL会自动提取证书用于验证,因此无需额外指定-certfile。
  • 去掉-noverify选项时出现的self signed certificate错误是正常现象:自签名证书不在系统默认信任链中,OpenSSL会拒绝信任该证书,此时的失败是证书信任验证失败,而非签名本身的完整性验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:16:29