代码之家  ›  专栏  ›  技术社区  ›  David

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

  •  4
  • David  · 技术社区  · 17 年前

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

    新规定要求所有带有附件的邮件现在都进行数字签名。

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

    看起来OpenSSL会对此进行解码/提取,并且有人设法在Windows上编译了一个版本。然而,对可执行文件的大量试错测试一直令人沮丧,因为我找不到正确的标志组合来简单地说“打开smime.p7m文件并写出你找到的所有嵌入式文件”。“openssl smime”在所有选项之后似乎总是想要一个“cert.pem”,而我没有。

    我错过了什么?提前感谢。

    2 回复  |  直到 17 年前
        1
  •  5
  •   sanmai    6 年前

    你尝试过openssl的“-noverify”选项吗?

    对于仅签名的邮件,您可以使用

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

    然后,您可以使用类似RFC822的解析器从该“blob”中获取正文和附件。这意味着您的解析器必须能够进行引用的可打印和base64等编码。

        2
  •  -4
  •   David    17 年前

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