我必須編寫一個X.509 openssl證書分析器的Java實現,但我遇到了一個問題:我不知道如何獲取sha1以驗證證書。 任何人都可以幫我理解我該怎麼辦?我知道Java中有一種方法getTBSCertificate()
,但我必須爲了我的目的而重寫它。從Java中的X.509 openssl證書中提取sha1
1
A
回答
5
假設你的意思是在瀏覽器和操作系統工具中通常顯示爲'指紋'的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。
+0
這是正確的指紋確實。我的猜測是,這個問題也許是關於驗證簽名......這裏有幾個最近的相關問題:[關於指紋](http://security.stackexchange.com/q/14330/2435)和[關於簽名(和CA)](http://stackoverflow.com/q/10411433/372643)。 – Bruno 2012-05-08 16:34:57
相關問題
- 1. 從提取X.509證書的自定義擴展的OID與OpenSSL的
- 2. X.509證書籤名提取
- 3. 用Java讀取X.509證書
- 4. 從Java中的PEM格式文件中提取多個X.509證書
- 5. 在Java中籤名X.509證書
- 6. 節點JS,如何從P12文件中提取X.509證書?
- 7. 如何從字節[]中提取X.509 DER證書?
- 8. 從X.509證書中刪除私鑰
- 9. 通過Java程序使用OpenSSL頒發X.509證書
- 10. Java 1.7主題Hash of X.509證書OpenSSL 1.0+兼容
- 11. 在iPhone應用程序中使用X.509證書與OpenSSL
- 12. 從自簽名證書生成X.509 SubjectPublicKeyInfo/OpenSSL PEM公鑰
- 13. x 509根證書驗證
- 14. WCF上的X.509證書?
- 15. 800 Java線程x.509證書
- 16. 找不到X.509證書:
- 17. 證書請求X.509
- 18. 生成X.509證書
- 19. 證書主題X.509
- 20. 從已簽名的APK或JAR中提取原始X.509證書
- 21. 如何使用C++從特定文件中提取X.509證書(DER編碼)?
- 22. 使用openssl將mykeystore.pfx導出爲X.509證書
- 23. jsrsasign - 如何提取x.509證書的指紋?
- 24. 使用PyOpenSSL提取X.509證書自定義擴展的值
- 25. 驗證Linux上的X.509證書
- 26. 在java中檢索X.509證書的主題替代名稱
- 27. 如何從Java中的X.509讀取擴展?
- 28. X.509證書驗證過程
- 29. 如何驗證X.509證書格式?
- 30. 在Java密鑰庫中存儲X.509證書
看看這裏:http://stackoverflow.com/questions/143523/x509-certificate-parsing-libraries-for-java – 2011-12-31 10:54:36