OpenSSL smime验证失败,证书和签名正确

OpenSSL smime验证失败,证书和签名正确,openssl,signature,actionscript-2,edi,smime,Openssl,Signature,Actionscript 2,Edi,Smime,我收到加密和签名的smime消息。 解密是可以的,数据似乎是正确的 openssl.exe smime -decrypt -in %1 -out %1_signed.txt -inkey myPrivate.pem 但在验证签名阶段,我得到了错误 openssl.exe smime -verify -CAfile senderCACert.pem -certfile senderCert.pem -in %1 -out %1_plain Verification failure 7600:e

我收到加密和签名的smime消息。 解密是可以的,数据似乎是正确的

openssl.exe smime -decrypt -in %1 -out %1_signed.txt -inkey myPrivate.pem
但在验证签名阶段,我得到了错误

openssl.exe smime -verify -CAfile senderCACert.pem -certfile senderCert.pem -in %1 -out %1_plain

Verification failure
7600:error:21071065:PKCS7 routines:PKCS7_signatureVerify:digest failure:./crypto/pkcs7/pk7_doit.c:9
48:
7600:error:21075069:PKCS7 routines:PKCS7_verify:signature failure:./crypto/pkcs7/pk7_smime.c:312:
发送方两个证书(CA证书和客户端证书)都应正常

我认为openssl可以在解密过程中生成特定的符号,比如新行字符或源消息中不存在的其他符号。或者它可以处理非标准算法(至少据我所知,openssl具有非标准的私钥存储格式)

我使用openssl 0.9.8h。另一方的smime消息由“webMethods EDI version 6.5”软件形成(它是处理EDI消息的AS2服务器)

这个错误的原因是什么

你能建议另一个smime工具试试吗?

[INTRO] 谢谢你的提问;-)我终于花了一些时间正式说明如何使用OpenSSL调试AS2通信

[背景](1)我正在开发BabelAS2——一种EDIINT AS2(RFC 4130)标准传输协议的开源VBScript实现。我使用CAPICOM作为加密库。(2) 我想检查如何从中使用“Win32 OpenSSL v0.9.8q”调试加密部分;-)

[解决方案1]解密HTTP有效负载:

  • 在HTTP负载转储的顶部手动添加以下文本

    MIME-Version: 1.0
    Content-Disposition: attachment; filename="smime.p7m"
    Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
    Content-Transfer-Encoding: base64
    [CRLF]
    
  • 然后,您可以使用:

    openssl smime -decrypt -inkey "Server.pair-of-keys.pem" -in "HTTP-Payload.encrypted.txt.with-manually-added-header.txt" -out "decrypted.with-OpenSSL.txt"
    
  • [解决方案#2]解密消息的签名:

  • 只用

    openssl.exe smime -verify -in "decrypted.with-OpenSSL.txt" -CAfile "Client.cer"
    
  • 让我知道它是否对您有帮助…

    [INTRO] 谢谢你的提问;-)我终于花了一些时间正式说明如何使用OpenSSL调试AS2通信

    [背景](1)我正在开发BabelAS2——一种EDIINT AS2(RFC 4130)标准传输协议的开源VBScript实现。我使用CAPICOM作为加密库。(2) 我想检查如何从中使用“Win32 OpenSSL v0.9.8q”调试加密部分;-)

    [解决方案1]解密HTTP有效负载:

  • 在HTTP负载转储的顶部手动添加以下文本

    MIME-Version: 1.0
    Content-Disposition: attachment; filename="smime.p7m"
    Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
    Content-Transfer-Encoding: base64
    [CRLF]
    
  • 然后,您可以使用:

    openssl smime -decrypt -inkey "Server.pair-of-keys.pem" -in "HTTP-Payload.encrypted.txt.with-manually-added-header.txt" -out "decrypted.with-OpenSSL.txt"
    
  • [解决方案#2]解密消息的签名:

  • 只用

    openssl.exe smime -verify -in "decrypted.with-OpenSSL.txt" -CAfile "Client.cer"
    

  • 如果对您有帮助,请告诉我……

    谢谢。我已经解决了这个问题,并在这里进行了描述:@Donz,感谢您的反馈和链接,如果我在“应用程序/EDI”方面遇到问题,我会记住它;-)谢谢我已经解决了这个问题,并在这里进行了描述:@Donz,感谢您的反馈和链接,如果我在“应用程序/EDI”方面遇到问题,我会记住它;-)