在一个别名下将服务器信任证书链导出到 Truststore
Export server trust certificate chain to Truststore under one alias
我们从客户端获得了 .p7b 格式的服务器证书链,我们需要使用 Java/Scala API
导出到我们的客户端信任库
他们的证书文件包含三个证书:root、intermediate、actual server...
我们如何以相同的别名将其中三个导出到我们的信任库中?
真的需要用一个别名导出它们吗?
这是我们目前所做的...
//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 的别名,所以我们最终将三个条目插入到信任库中,不确定这是否正确插入证书链..
有没有办法在单个别名下插入证书链?
客户端如何找到匹配的服务器信任?它使用别名吗?客户端也只需要服务器根证书吗?或者它需要所有三个?
谢谢
1.Is there a way to insert the cert chain under a single alias ?
不,每个可信证书都有一个别名
别名标识唯一的可信证书条目、私钥条目或秘密密钥条目。私钥条目也可以伴随相应 public 密钥的证书链。
2 How does the client finds the matching server trust ? is it using alias ? Also does the client requires only server root cert ? or it needs all three ?
您只需将根证书导入信任库即可。不需要别名
连接期间的客户端将收到服务器证书和证书链(无根证书)。它将尝试将链的最后一个证书(从叶到上)与信任库的一些证书进行匹配。这是为了验证证书的签名是否与根证书的 public 密钥相对应
我们从客户端获得了 .p7b 格式的服务器证书链,我们需要使用 Java/Scala API
导出到我们的客户端信任库他们的证书文件包含三个证书:root、intermediate、actual server...
我们如何以相同的别名将其中三个导出到我们的信任库中?
真的需要用一个别名导出它们吗?
这是我们目前所做的...
//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 的别名,所以我们最终将三个条目插入到信任库中,不确定这是否正确插入证书链..
有没有办法在单个别名下插入证书链?
客户端如何找到匹配的服务器信任?它使用别名吗?客户端也只需要服务器根证书吗?或者它需要所有三个?
谢谢
1.Is there a way to insert the cert chain under a single alias ?
不,每个可信证书都有一个别名
别名标识唯一的可信证书条目、私钥条目或秘密密钥条目。私钥条目也可以伴随相应 public 密钥的证书链。
2 How does the client finds the matching server trust ? is it using alias ? Also does the client requires only server root cert ? or it needs all three ?
您只需将根证书导入信任库即可。不需要别名
连接期间的客户端将收到服务器证书和证书链(无根证书)。它将尝试将链的最后一个证书(从叶到上)与信任库的一些证书进行匹配。这是为了验证证书的签名是否与根证书的 public 密钥相对应