尝试使用Openssl解密S / MIME文件

时间:2015-02-11 22:18:04

标签: linux email openssl encryption smime

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

我可以在雷鸟中打开它们。

这是我试过的:

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

我的步骤有什么问题?

3 个答案:

答案 0 :(得分:0)

输入不应该是smime.p7m。应该是里面有smime.p7m的电子邮件。应该有电子邮件标题和base64编码的内容。

答案 1 :(得分:0)

使用cms而不是smime:

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

答案 2 :(得分:0)

就我而言,我从 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 用 Ja​​va 发送实际的 SMIME 加密电子邮件