我必须编写一个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