【问题标题】:Trying to decrypt S/MIME file using Openssl尝试使用 Openssl 解密 S/MIME 文件
【发布时间】:2015-04-15 15:02:40
【问题描述】:

我是 openssl 新手。 我正在尝试编写一个python脚本(调用openssl)来解密多个p12加密的eml文件但失败了。

我可以在 Thunderbird 中打开它们。

这是我尝试过的:

openssl pkcs12 -in keys/pkitepki.p12 -clcerts -nokeys -out file.crt.pem
openssl pkcs12 -in keys/pkitepki.p12 -nocerts -out file.key.pem
openssl smime -decrypt -in smime.p7m -recip file.crt.pem  -inkey file.key.pem 

我得到的错误是:

Error reading S/MIME message
139955665413864:error:0D0D40D1:asn1 encoding routines:SMIME_read_ASN1:no content type:asn_mime.c:451

我的步骤有什么问题?

【问题讨论】:

    标签: linux email openssl encryption smime


    【解决方案1】:

    输入不应是 smime.p7m。它应该是其中包含 smime.p7m 的电子邮件。应该有电子邮件标头和 base64 编码的内容。

    【讨论】:

      【解决方案2】:

      使用 cms 代替 smime:

      openssl cms -decrypt -in smime.p7m -recip file.crt.pem  -inkey file.key.pem
      

      【讨论】:

        【解决方案3】:

        就我而言,我从 Gmail 中获得的加密 .p7m 文件附件是 DER 格式,而不是 OpenSSL default(默认为 SMIME 格式)。因此,只需将 -inform DER 添加到您的 OpenSSL 命令中,看看它是否有效。

        这是我原来的 OpenSSL 命令:

        openssl smime -decrypt -in "smime.p7m" -inkey "georgie_smime.key.pem"
        

        输出了这个错误Error reading S/MIME message 2147483656:error:0D0D40D1:asn1 encoding routines:SMIME_read_ASN1:no content type:crypto/asn1/asn_mime.c:391:

        所以只需添加-inform DER

        openssl smime -decrypt -in "smime.p7m" -inform DER -inkey "georgie_smime.key.pem"
        

        它成功了!

        另外,如果该信息对任何人有用,我会使用 BouncyCastle 在 Java 中发送实际的 SMIME 加密电子邮件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-31
          • 1970-01-01
          • 2015-10-06
          • 1970-01-01
          • 1970-01-01
          • 2014-05-04
          • 2015-05-29
          • 2021-05-03
          相关资源
          最近更新 更多