Ошибка проверки OpenSSL smime с правильным сертификатом и подписью - PullRequest
1 голос
/ 14 октября 2010

Я получаю зашифрованное и подписанное смайм-сообщение. Расшифровка в порядке, данные кажутся правильными.

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. А смайм-сообщение на другой стороне формируется программным обеспечением «webMethods EDI version 6.5» (это сервер AS2 для обработки сообщений EDI).

В чем причина этой ошибки?

Не могли бы вы посоветовать другой инструмент smime, чтобы попробовать?

1 Ответ

1 голос
/ 07 декабря 2010

[INTRO] Спасибо за ваш вопрос ;-) Я наконец-то нашел время, чтобы формализовать, как я могу отлаживать свою связь AS2 с помощью OpenSSL.

[ПРЕДПОСЫЛКИ] (1) Я разрабатываю BabelAS2 - http://code.google.com/p/babelas2/ - реализация VBScript с открытым исходным кодом стандартного транспортного протокола EDIINT AS2 (RFC 4130).Я использую CAPICOM в качестве библиотеки криптографии.(2) Я хотел проверить, как я могу использовать "Win32 OpenSSL v0.9.8q" из http://www.shininglightpro.com для отладки криптографической части; -)

[РЕШЕНИЕ # 1] Расшифровать полезную нагрузку HTTP:

  1. Вручную добавьте следующий текст поверх дампа полезной нагрузки 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]
    
  2. Затем вы можете использовать:

    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] Очень подпись дешифрованного сообщения:

  1. Просто используйте

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

Дайте мне знать, помогло ли это вам ...

...