如何使用 openssl smime 解密 S/MIME 加密的电子邮件?

如何使用 openssl smime 解密 S/MIME 加密的电子邮件?

出于某种原因,我似乎无法找到这个基本问题的答案。我收到了一封加密的 S/MIME 电子邮件,我想使用 解密它openssl smime。但是,我认为我无法以正确的格式提供密钥。这就是我所做的:

  • 将电子邮件消息(原始文本格式)保存为smime-ok.txt
  • 从 OS X 钥匙串中导出我的密钥为myself.p12
  • 从 OS X 钥匙串导出我的公共证书myself.cer

然后我尝试

openssl smime -decrypt -in smime-ok.txt -recip myself.p12

但我明白

unable to load certificate
37740:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/crypto/pem/pem_lib.c:648:Expecting: TRUSTED CERTIFICATE

我也尝试了-inkey myself.p12 -recip myself.cer其他一些方法,但没有什么效果。我猜我的密钥文件没有被读取,或者没有被正确读取,因为我也没有被提示输入密码。

我怀疑我可能基本上误解了如何使用openssl smime

答案1

事实上,openssl smime输入需要 PEM 格式-recip,但 p12 文件是 PKCS12 格式。以下是如何将p12文件转换为pem文件:

openssl pkcs12 -in myself.p12 -out myself.pem

此后,以下内容将按预期解密电子邮件:

openssl smime -decrypt -in smime-ok.txt -recip myself.pem

相关内容