Извлечение sha1 из X.509 OpenSSL сертификата в Java - PullRequest
1 голос
/ 31 декабря 2011

Я должен написать реализацию Java для анализатора сертификатов openssl X.509, но у меня есть проблема: я не знаю, как получить sha1 для проверки сертификатов.Может ли кто-нибудь помочь мне понять, что я должен делать?Я знаю, что в Java есть метод getTBSCertificate(), но я должен переписать его для своей цели.

1 Ответ

5 голосов
/ 07 мая 2012

Предполагая, что вы имеете в виду sha1, который обычно отображается как «отпечаток пальца» в браузерах и инструментах ОС - вам нужен 1) необработанный сертификат как DER; а затем 2) sha1 it и 3) перевести это в обычную строку, состоящую из двух цифр, шестнадцатеричных и двоеточий.

Что касается 1; getEncoded () из java.security.cert.Certificate получает это.

Что касается 2: MessageDigest имеет эту функцию.

Что касается 3: я оставлю это вам:)

... someFoo(X509Certificate cert) {
    MessageDigest sha1 = MessageDigest.getInstance("SHA1");
    System.out.println("  Subject " + cert.getSubjectDN());
    System.out.println("   Issuer  " + cert.getIssuerDN());
    sha1.update(cert.getEncoded());
    System.out.println("   sha1    " + toHexString(sha1.digest()));
    System.out.println();
  }

должен сделать свое дело. Этот вывод соответствует выводу Java Keytool.

Dw.

...