Как вычислить отпечаток SHA-1 сертификата X.509?

Я пытаюсь реализовать генератор сертификатов X.509 с нуля (я знаю о существующих, но мне нужен еще один один). Я не могу понять, как вычислить SHA-1 (или любой другой) отпечаток сертификата.

В RFC5280 говорится, что входом для функции подписи является поле tbsCertificate в кодировке DER. К сожалению, вычисляемый мной хеш отличается от хеша, созданного OpenSSL. Вот пошаговый пример.

  1. сгенерируйте сертификат с помощью инструмента OpenSSL x509 (в двоичной форме DER, не ASCII PEM)
  2. вычислите его хэш SHA-1, используя openssl x509 -fingerprint
  3. извлечь поле TBS с помощью dd (или чего-то еще) и сохранить его в отдельном файле; вычислить его хэш с помощью утилиты sha1sum

Теперь хеши, которые я получаю на шагах 2 и 3, различны. Может кто-нибудь подскажет, что я делаю не так?

16
задан Roman Dmitrienko 26 January 2011 в 12:22
поделиться