使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?

发布于 2024-07-11 23:45:53 字数 476 浏览 12 评论 0原文

我们有一个旧的进程(VBScript),它读取一个公共邮箱并将某些电子邮件处理到数据库中。

新法规要求所有带附件的邮件都经过数字签名。

该进程现在仅提取一个文件 (smime.p7m)。 使用基于 GUI 的查看器,我可以查看嵌入的文件并毫无问题地提取它们。 然而,我真正需要的是一个基于命令行的提取器,它将写出嵌入文件(PDF、DOC、XLS)——它们没有加密,只是签名。 我使用没有证书的笔记本电脑进行了测试,只需使用上述查看器打开 smime.p7m 文件即可。

看起来 OpenSSL 会解码/提取这个,并且有人设法获得在 Windows 上编译的版本。 然而,对可执行文件的大量试验和错误测试令人沮丧,因为我找不到正确的标志组合来表示“打开 smime.p7m 文件并写出您找到的所有嵌入文件”。 在所有选项之后,“openssl smime”似乎总是想要一个“cert.pem”,但我还没有得到。

我缺少什么? 提前致谢。

We have an old process (VBScript) that reads a common mailbox and processes certain emails into a database.

New regulations have all messages with attachments now being digitally signed.

The process now only extracts one file (smime.p7m). Using a GUI-based viewer, I can see the embedded files and extract them with no problem. However, what I really need is a command-line based extracter that will write out the embedded files (PDFs, DOCs, XLSs) - they're not encrypted, just signed. I tested this by using a laptop that had no certificates and simply opened the smime.p7m file with the aforementioned viewer.

It looks like OpenSSL will decode/extract this and someone managed to get a version compiled on Windows. However, a lot of trial and error testing of the executable has been frustrating because I can't find the right combination of flags to just say "open the smime.p7m file and write out all the embedded files you find". "openssl smime" always seems to want a "cert.pem" after all the options and I haven't got that.

What am I missing? Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寒尘 2024-07-18 23:45:54

您是否尝试过 openssl 的“-noverify”选项?

对于仅签名的消息,您可以使用

openssl smime -verify -in <signed.eml> -noverify -out /tmp/blob

然后您可以使用类似 RFC822 的解析器从该“blob”中获取正文和附件。 这意味着您的解析器必须能够进行诸如quoted-printable 和base64 之类的编码。

Did you try the "-noverify" option of openssl?

For a signed-only message, you can use

openssl smime -verify -in <signed.eml> -noverify -out /tmp/blob

Then you can use a RFC822-like parser to get the body and attachment(s) out of that "blob". That means that your parser has to be capable of encodings like quoted-printable and base64.

赠佳期 2024-07-18 23:45:54

看起来唯一可用的选择是使用 Chilkat 的库编写一个简单的程序。 此选项的价格为 149 美元或 289 美元,具体取决于每个开发人员的许可证类型,但至少是免版税的。

Looks like the only available option is to write a simple program using Chilkat's library. This option costs $149 or $289, depending on what kind of license, per developer, but at least it's royalty-free.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文