Создание дайджеста сообщений OpenSSL - PullRequest
0 голосов
/ 07 января 2020

Basi c Проблема в том, что я генерирую подписанный документ с помощью "openssl smime" и могу его проверить, но мой партнер этого не делает (использует другое программное обеспечение). Поэтому я попытался в этом разобраться и посмотреть, совпадают ли его и мой дайджест сообщения. Но - я даже не могу выяснить, какой дайджест сообщения действительно (и правильно) используется в моем документе.

У меня есть файл с именем "cleartext.txt", содержащий произвольный текст. Затем я делаю

$ openssl smime -sign -md sha256 -nocerts -inkey as2.key -signer as2.crt -outform PEM < cleartext.txt > signature.txt
$ openssl sha256 cleartext.txt
$ openssl asn1parse -in signature.txt 

Второе утверждение генерирует значение ha sh:

SHA256(cleartext.txt)= c64df2df82cc1dab9f9b06d41fab458de976de7e149fe0854fe125a96ef151dd

Последнее утверждение показывает мне детали моего сертификата (поэтому, по крайней мере, что-то должно работать здесь) плюс

  251:d=8  hl=2 l=   9 prim: OBJECT            :pkcs7-data
  262:d=6  hl=2 l=  28 cons: SEQUENCE          
  264:d=7  hl=2 l=   9 prim: OBJECT            :signingTime
  275:d=7  hl=2 l=  15 cons: SET               
  277:d=8  hl=2 l=  13 prim: UTCTIME           :200107145037Z
  292:d=6  hl=2 l=  47 cons: SEQUENCE          
  294:d=7  hl=2 l=   9 prim: OBJECT            :messageDigest
  305:d=7  hl=2 l=  34 cons: SET               
  307:d=8  hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]:0E68D5CC9A859736EEE842355C1FD73F3FC9B274657A97F4CAF38AD3344ACBC8
  341:d=6  hl=2 l= 121 cons: SEQUENCE          
  343:d=7  hl=2 l=   9 prim: OBJECT            :S/MIME Capabilities
  354:d=7  hl=2 l= 108 cons: SET               
  356:d=8  hl=2 l= 106 cons: SEQUENCE          
  358:d=9  hl=2 l=  11 cons: SEQUENCE          
  360:d=10 hl=2 l=   9 prim: OBJECT            :aes-256-cbc
  371:d=9  hl=2 l=  11 cons: SEQUENCE          
  373:d=10 hl=2 l=   9 prim: OBJECT            :aes-192-cbc
  384:d=9  hl=2 l=  11 cons: SEQUENCE          
  386:d=10 hl=2 l=   9 prim: OBJECT            :aes-128-cbc
  397:d=9  hl=2 l=  10 cons: SEQUENCE          
  399:d=10 hl=2 l=   8 prim: OBJECT            :des-ede3-cbc
  409:d=9  hl=2 l=  14 cons: SEQUENCE          
  411:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  421:d=10 hl=2 l=   2 prim: INTEGER           :80
  425:d=9  hl=2 l=  13 cons: SEQUENCE          
  427:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  437:d=10 hl=2 l=   1 prim: INTEGER           :40
  440:d=9  hl=2 l=   7 cons: SEQUENCE          
  442:d=10 hl=2 l=   5 prim: OBJECT            :des-cbc
  449:d=9  hl=2 l=  13 cons: SEQUENCE          
  451:d=10 hl=2 l=   8 prim: OBJECT            :rc2-cbc
  461:d=10 hl=2 l=   1 prim: INTEGER           :28
  464:d=5  hl=2 l=  13 cons: SEQUENCE          
  466:d=6  hl=2 l=   9 prim: OBJECT            :rsaEncryption
  477:d=6  hl=2 l=   0 prim: NULL              
  479:d=5  hl=4 l= 256 prim: OCTET STRING      [HEX DUMP]:4CBEA622925F2CD899D2B5A0D26F831C0D63DE88FC5CC1E89F8F164E84526E49194AD537426378D6932DA066425A117B9FA96A70E2000F603449095AAF8E0B93D0D4EB26FC2B3D86726F94928882C37ACEF0537555DEB4AF3D63943A05A109D49B941C8131A9734C15BA7418F2D34E6B63B710E975EDE1EB9A71A40C251D6D72A5C802F3CDAE123E5E47413DC414DF8A2B0BB6E225145224C33E64245F6E4BD3EC3A60E0B0D6FAA8F9BE69BFA0B27E4A3326E819EF8A1C13738CA1A02D08F74D22C52ABA84D6FD26BE8EA6461251162CD751DC6DC2A30FB45211AC28B371F5FEDB57C3845DA04C4C0FFC40760C623C574471CECD4681E7755277B8BFD8F31730

Почему я получаю "c64df2 ..." с одной из этих команд и "0e68d5 ..." с другой? Как я могу ожидать, что мой партнер проверит мои подписи, если я даже не смогу воспроизвести значение ha sh в моем открытом тексте?

1 Ответ

0 голосов
/ 08 января 2020

Решение найдено после некоторого чтения плюс проб и ошибок: в главе 4 (2) RFC2049 требует, чтобы простой текст был преобразован в каноническую форму, то есть с использованием CRLF для окончаний строк.

openssl smime -sign молча делает это преобразование для своих входных файлов, но openssl sha256 этого не делает.

Как только я сам использую CRLF, результат такой же, как и ожидалось.

...