首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将服务器信任证书链导出到一个别名下的Truststore

将服务器信任证书链导出到一个别名下的Truststore
EN

Stack Overflow用户
提问于 2017-07-24 09:06:38
回答 1查看 2.5K关注 0票数 1

我们从客户端获得了一个.p7b格式的服务器证书链,我们需要使用Java/Scala将其导出到客户端信任存储。

他们的证书文件包含三个证书:根、中间、实际服务器.

我们怎么能用同一个别名把其中三个出口到我们的信托商店呢?

实际上是否需要用一个别名导出它们?

这就是我们目前所做的..。

代码语言:javascript
复制
//load default cacerts first in order to export the server cert
val keystore = KeyStore.getInstance(KeyStore.getDefaultType)
keystore.load(new FileInputStream(cacertsPath), decryptedPass.toCharArray)

val cf = CertificateFactory.getInstance("X.509")
//this is the server cert we are trying to export 
val bais = fullStream(customTrustFile)  
val certs = cf.generateCertificates(bais) -->  this returns a chain of 3 certs

certs.toArray[Certificate](new Array[Certificate](certs.size())).zipWithIndex.foreach {
    case (cert, i) => keystore.setCertificateEntry("api.*.*.site-" + i, cert)

// Save the new keystore contents
keystore.store(new FileOutputStream(cacertsPath),decryptedPass.toCharArray)

如果您看到,我们插入证书的方式,它使用了三个带有后缀-1,-2,-3的别名,所以我们最终将三个条目插入到信任库中,不确定这是否是插入cert链的权利。

  1. 是否有方法将证书链插入到单个别名下?
  2. 客户端如何找到匹配的服务器信任?它用的是别名吗?客户端是否只需要服务器根证书?还是这三个都需要?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 13:58:28

1.是否有办法将证书链插入到一个别名下?

不,每个受信任的证书都有一个别名。

别名标识唯一的受信任证书条目、私钥条目或秘密密钥条目。私钥条目还可以伴随相应公钥的证书链。

客户端如何找到匹配的服务器信任?它用的是别名吗?客户端是否只需要服务器根证书?还是这三个都需要?

您只需要将根证书导入信任库。不需要别名

连接期间的客户端将接收服务器证书和证书链(没有根)。它将尝试将链的最后一个证书(从叶到上)与信任库的一些证书匹配。这将验证证书的签名是否与根证书的公钥相对应。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45276451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档