Java keystore:如何正确导入ca证书?

Java keystore:如何正确导入ca证书?

我们已经更新了其中一台服务器 (apache httpd) 的证书。对于 webservice 接口(用于移动客户端),我们还需要 tomcat 上的证书,即:存储在 java 密钥库中。我们已经在 java 密钥库中拥有了证书,但仍然缺少根证书。

如果我们列出旧密钥库证书的详细信息,我们会得到:

/> keytool -list -v -keystore 2012.jks -alias ourcertificate
Keystore-Kennwort eingeben:  
Aliasname: ourcertificate
...
...
...
Zertifikatkettenlänge: 3  // certificate length: 3
Zertifikat[1]:            // certificate[1]
...
...
...
Zertifikat[2]:
...
...
...
Zertifikat[3]:
...
...
...

这里重要的是,所有 ca 证书都已是密钥库的“ourcertificate”别名的一部分。

如果我们列出新证书(新密钥库文件)的详细信息,我们会得到:

/> keytool -list -v -keystore 2015.jks -alias ourcertificate
Keystore-Kennwort eingeben:  
Aliasname: ourcertificate
...
...
...
Zertifikatkettenlänge: 1   // certificate length: 1
Zertifikat[1]:             // certificate[1]
...
...
...

这里缺少 CA 证书。要导入 CA 证书,我们尝试以下命令:

/> keytool -import -alias alpha -file gsalphasha2g2r1.der -keystore 2015.jks
Keystore-Kennwort eingeben:  
...
... 
...
Diesem Zertifikat vertrauen? [Nein]:  Ja    // trust this certificate? [No]: Yes
Zertifikat wurde Keystore hinzugefügt       // certificate successfully added to keystroe

但是这会将新的受信任证书添加到密钥库中(使用新的别名)。此外,添加根 ca 证书也无济于事。如果我们列出“ourcertificate”条目的证书详细信息,我们仍然会得到一个长度为 1 的证书。此外,在导入 ca 证书时指定“ourcertificate”也无济于事(然后我们会收到一条错误,提示答案和密钥库中的公钥不相同;德语为“Keytool-Fehler:java.lang.Exception:答案和密钥库中的公钥不一致”)

怎么了?我们如何将 CA 证书导入 Java 密钥库,以便将 CA 证书链接到“ourcertificate”

编辑

我想我还需要描述一下如何导入私钥和证书对。这有点困难,因为 CSR 是用 openssl 制作的。我们需要将私钥和证书导入密钥库文件。为此,我们使用了以下 Java 类文件:http://www.agentbob.info/agentbob/79-AB.html(ImportKey 类)。我们知道这是可行的。但导入密钥和证书时可能出现错误...

相关内容