Я должен написать Java-реализацию парсера сертификатов X.509 openssl, но у меня проблема: я не знаю, как получить sha1 для проверки сертификатов. Может ли кто-нибудь помочь мне понять, что я должен делать? Я знаю, что в Java есть метод getTBSCertificate()
, но я должен переписать его для своих целей.
Извлечение sha1 из сертификата X.509 openssl в Java
comment
Посмотрите здесь: stackoverflow.com/questions /143523/
- person Francis Upton IV   schedule 31.12.2011
Ответы (1)
Предполагая, что вы имеете в виду sha1, который обычно отображается как «отпечаток пальца» в браузерах и инструментах ОС, вам нужно 1) необработанный сертификат как DER; а затем 2) sha1 это и 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.
person
Dirk-Willem van Gulik
schedule
07.05.2012
Это действительно верно для отпечатка пальца. Я предполагаю, что вопрос может также касаться проверки подписи... Вот несколько недавних связанных вопросов: о отпечатках пальцев и о подписях (и центрах сертификации).
- person Bruno; 08.05.2012