OpenSSL 使用内容类型“应用程序/EDI”处理 smime 消息。作为文本并更改换行符

发布于 2024-09-28 09:46:31 字数 215 浏览 6 评论 0原文

我收到内容类型为“应用程序/EDI”的 smime 消息。它是非标准 mime 类型,内容应解释为二进制。但 OpenSSL 在验证签名期间将其视为文本,并将换行符从“\n”更改为“\r\n”(根据内容类型“文本”规范的需要)。所以摘要出错,验证失败。

有没有办法让 openssl 不更改原始消息中的任何内容?参数“-binary”不适用于任何版本(我尝试过 0.9.7、0.9.8、1.0.0)。

I receive smime message with content-type 'Application/EDI'. It is non-standard mime type and content should be interpreted as binary. But OpenSSL during verifying signature treats it as text and changes line breaks from '\n' to '\r\n' (as needed by spec for content-type 'text'). So digest becomes wrong and verification fails.

Is there any way to make openssl not chaging anything in original message? Argument '-binary' doesn't work on any version (I tried 0.9.7, 0.9.8, 1.0.0).

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

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

发布评论

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

评论(1

亢潮 2024-10-05 09:46:31

好的,回答我自己的问题。

我已将输入数据拆分为两个单独的文件,其中内容和签名删除了不必要的元数据。之后,我将签名的 mime 类型更改为 application/pkcs7-mime 并且使用此命令验证成功:

openssl.exe smime -verify -inform SMIME -CAfile caCert.pem -certfile cert.pem -in signature.txt -content content.txt

-inform 更改为 PEM 的变体也可以,但签名必须是没有 Content-xxx 标头

Ok, answering my own question.

I've split input data into two separate files with content and signature removing unnecessary metadata. After that I changed mime type of signature to application/pkcs7-mime and verification became successful with this command:

openssl.exe smime -verify -inform SMIME -CAfile caCert.pem -certfile cert.pem -in signature.txt -content content.txt

Variant with changing -inform to PEM also works, but signature must be without Content-xxx headers

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