java - 获取证书链

标签 java cryptography certificate x509certificate digital-certificate

我在 Java 中使用 X509 证书。 给定一个证书,是否可以在到达根证书之前找到签名层次结构中的所有其他证书?

我有一个证书文件(扩展名为 .cer),我想提取父签名证书。我想继续查找该证书的父级,直到获得最终的自签名根证书。

我检查了 java.security.cert 中的 X509Certificate 证书 API 和相关 API,但找不到任何有用的东西。

最佳答案

这并不难 - 假设您以某种方式/带外获得了一个或多个钥匙串(keychain)中的所有中间证书和根证书。

看看

http://codeautomate.org/blog/2012/02/certificate-validation-using-java/

一个代码片段就是这样做的。关键位在 validateKeyChain() 中,基本上由

   cert = cert-to-validate
   while(not self signed) {
       extract issuer from cert
       scan keychain(s) to find cert with a subject equal to the issuer
       if none found - error
       check if the signature is correct.
       cert = issuers_cert
   }
   if not at the top/root - error

至于如何您获得中间/根证书 - 那是一个不同的问题。请注意,此代码有点幼稚 - 并且不太了解交叉签名。尽管 java pkix 调用 - BouncyCaSTLe 有一个示例。

您通常可以将根证书构建到 key 链中;但中间证书通常需要“收集”或更动态地发现。这通常需要在 TLS 或类似期间查询 SSL 堆栈。

关于java - 获取证书链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097375/

相关文章:

c++ - 在与 PHP 的 openssl 库兼容的 C++ 中签署数据

java - Java中如何获取IV进行解密?

objective-c - Objective-C 中的 MD5 算法

tomcat 7 (7.0.10) 上的 SSL 我在这里使用 Thawte SGC 证书

docker - 如何将受信任的根 CA 添加到 Docker alpine

java - 为什么像素是 float 的?

java - Jersey - 如果使用多态性,JSON 响应为空

java - 类类型的可变参数 - Java

java - 第一次使用 JAXB 将 XML 映射到 Java 类 — 需要一些构建帮助

iphone - 我可以对开发和分发配置文件使用相同的 .pem 文件吗