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

not*_*vvy 5 decryption openssl smime

出于某种原因,我似乎无法找到这个基本问题的答案。我收到了一封加密的 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
Run Code Online (Sandbox Code Playgroud)

但我得到

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
Run Code Online (Sandbox Code Playgroud)

我还尝试了-inkey myself.p12 -recip myself.cer更多的变体,但这并没有什么区别。我猜想我的密钥文件没有被读取,或者没有正确读取,因为也没有提示我输入密码。

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

not*_*vvy 4

事实上,openssl smime输入是 PEM 格式-recip,但 p12 文件是 PKCS12 格式。p12这是将文件转换为文件的方法pem

openssl pkcs12 -in myself.p12 -out myself.pem
Run Code Online (Sandbox Code Playgroud)

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

openssl smime -decrypt -in smime-ok.txt -recip myself.pem
Run Code Online (Sandbox Code Playgroud)