【问题标题】:How to get content of S/Mime message with OpenSSL or PHP?如何使用 OpenSSL 或 PHP 获取 S/Mime 消息的内容?
【发布时间】:2013-06-30 01:14:33
【问题描述】:

请在我收到的邮件标题下方找到。我正在研究 AS2 协议。我可以发送消息,但在收到消息时遇到了一些问题。

Date: Fri, 28 Jun 2013 13:22:03 GMT
From: XXXXXXX
Message-ID: XXXXXXXXXX
MIME-Version: 1.0
Content-Type: application/pkcs7-mime; smime-type=enveloped-data;  name=smime.p7m
Content-Transfer-Encoding: binary
Content-Disposition: attachment; filename=smime.p7m
Disposition-Notification-To: XXXXXXXX
Disposition-Notification-Options: signed-receipt-protocol=optional, pkcs7-signature;            signed-receipt-micalg=optional, sha1
Receipt-Delivery-Option: XXXXXXXXXXXXXXXx
EDIINT-Features: CEM, multiple-attachments, AS2-Reliability
AS2-Version: 1.2
AS2-To: YYYY
AS2-From: XXXX
Content-Length: 59074

您能告诉我如何使用 OpenSSL 或 PHP 获取内容吗? 在我执行的大多数命令中,它给了我这个错误:

Error reading S/MIME message
140224062383968:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:150:
140224062383968:error:0D0D106E:asn1 encoding routines:B64_READ_ASN1:decode error:asn_mime.c:193:
140224062383968:error:0D0D40CB:asn1 encoding routines:SMIME_read_ASN1:asn1 parse error:asn_mime.c:528:

【问题讨论】:

    标签: encryption openssl certificate pki


    【解决方案1】:

    您似乎将标头而不是内容输入 ASN.1 BER 解码器。 BER 将 ASN.1 定义的数据结构编码为二进制编码。将字符串输入 BER 解码器总是会产生上述错误。

    相反,您可能应该首先对内容的 base 64 编码进行解码,然后将生成的二进制数据提供给接受 CMS 数据的解码器(CMS 已使用 ASN.1 指定并使用 BER/DER 编码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-29
      • 2011-02-15
      • 2014-05-04
      • 2012-11-18
      • 2018-06-01
      • 1970-01-01
      • 2015-06-03
      • 2021-09-08
      相关资源
      最近更新 更多