使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?
Posted
技术标签:
【中文标题】使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?【英文标题】:Decode/extract smime.p7m file contents (email with embedded files) with OpenSSL? 【发布时间】:2010-10-01 09:51:06 【问题描述】:我们有一个旧进程 (VBScript),它读取一个公共邮箱并将某些电子邮件处理到数据库中。
新法规现在对所有带有附件的邮件进行数字签名。
该过程现在只提取一个文件 (smime.p7m)。使用基于 GUI 的查看器,我可以看到嵌入的文件并毫无问题地提取它们。然而,我真正需要的是一个基于命令行的提取器,它将写出嵌入的文件(PDF、DOC、XLS)——它们没有加密,只是签名。我使用没有证书的笔记本电脑对此进行了测试,只需使用上述查看器打开 smime.p7m 文件。
看起来 OpenSSL 将对此进行解码/提取,并且有人设法获得了在 Windows 上编译的版本。但是,对可执行文件的大量试错测试令人沮丧,因为我找不到正确的标志组合来只说“打开 smime.p7m 文件并写出您找到的所有嵌入文件”。在所有选项之后,“openssl smime”似乎总是想要一个“cert.pem”,但我没有。
我错过了什么?提前致谢。
【问题讨论】:
【参考方案1】:您是否尝试过 openssl 的“-noverify”选项?
对于仅签名的消息,您可以使用
openssl smime -verify -in <signed.eml> -noverify -out /tmp/blob
然后您可以使用类似 RFC822 的解析器从“blob”中获取正文和附件。这意味着您的解析器必须能够编码像quoted-printable 和base64。
【讨论】:
不能说我做到了。在这种环境(军事站点)中,试图让 OpenSSL 完全正常工作是一件苦差事,而我从未真正成功过。最后,编写一个新程序来完成这项工作,利用 Chilkat 库快速完成了这项工作。不过,谢谢你的想法。【参考方案2】:看起来唯一可用的选项是使用 Chilkat 的库编写一个简单的程序。此选项的费用为 149 美元或 289 美元,具体取决于每个开发人员的许可类型,但至少它是免版税的。
【讨论】:
这很有趣。我很高兴今天找到了这个。以上是关于使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?的主要内容,如果未能解决你的问题,请参考以下文章
使用 OpenSSL 解码 ASN.1 DER OCTET STRING