2013-07-02 4 views
0

내가받은 메시지의 헤더를 아래에서 찾으십시오. 나는 AS2 프로토콜에서 일하고있다. 메시지를 보낼 수는 있지만받을 때 문제가 있습니다.OpenSSL 또는 PHP로 S/MIME 메시지의 내용을 얻는 방법은 무엇입니까?

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: 

답변

0

당신은 헤더 대신 ASN.1의 BER 디코더에 컨텐츠를 공급 한 것으로 보인다. BER은 ASN.1 정의 된 데이터 구조를 2 진 인코딩으로 인코딩합니다. BER 디코더에 문자열을 입력하면 항상 위와 같은 오류가 생성됩니다.

대신에 먼저 콘텐츠의 기본 64 인코딩을 디코딩하고 CMS 데이터를 받아들이는 디코더에 결과 바이너리 데이터를 제공해야합니다 (CMS는 ASN.1을 사용하여 지정되었으며 BER/DER 인코딩을 사용함).