Java中从X.509 openssl证书中提取sha1
我必须编写一个X.509 openssl证书解析器的Java实现,但我有一个问题:我不知道如何获得用于证书验证的sha1。Java中从X.509 openssl证书中提取sha1,java,x509certificate,x509,Java,X509certificate,X509,我必须编写一个X.509 openssl证书解析器的Java实现,但我有一个问题:我不知道如何获得用于证书验证的sha1。 有人能帮我理解我该做什么吗?我知道Java中有一个方法gettbCertificate(),但我必须重写它以达到我的目的。假设你指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——你需要1)原始证书作为密码;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串 关于1;java.security.cert.Certificate中的getEncod
有人能帮我理解我该做什么吗?我知道Java中有一个方法
gettbCertificate()
,但我必须重写它以达到我的目的。假设你指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——你需要1)原始证书作为密码;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串
关于1;java.security.cert.Certificate中的getEncoded()将为您提供这一信息
至于2:MessageDigest有这个功能
至于第三条:我将把它留给你:)
我们应该做到这一点。此输出与java keytool的输出相匹配
Dw.假设您指的是在浏览器和操作系统工具中通常显示为“指纹”的sha1——您需要1)原始证书作为凭证;然后2)sha1和3)将其转换为常用的两位数十六进制/冒号分隔字符串 关于1;java.security.cert.Certificate中的getEncoded()将为您提供这一信息 至于2:MessageDigest有这个功能 至于第三条:我将把它留给你:) 我们应该做到这一点。此输出与java keytool的输出相匹配
Dw.看看这里:看看这里:这确实是指纹的正确答案。我猜问题也可能是关于验证签名。。。这里有几个最近的相关问题:而且,这确实适用于指纹。我猜问题也可能是关于验证签名。。。这里有几个最近的相关问题:和。
... 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();
}