Entry Type" keyEntry"之间的区别和" trustedCertEntry"在密钥库中

时间:2015-02-16 15:00:20

标签: certificate ssl-certificate keystore keytool jks

我对这方面知之甚少,但我仍然试图通过谷歌搜索来做事。这是我面临的问题。

案例1(作品):

我有一个CA签名证书,我想在我的Web应用程序中使用它。我首先创建了一个密钥库。我看到它在密钥库中创建了一个条目类型“keyEntry”。然后我将CA签名证书导入到创建的密钥库。

以下是步骤:

keytool -genkeypair  -keystore keystore.jks

我在别名“mykey”的“keyEntry”类型的密钥库中看到一个条目

现在我导入证书:

keytool -importcert -alias abc -file cert.crt -keystore keystore.jks

现在我看到另一个trype“trustedcertEntry”条目。

使用此密钥库,我可以在上传时访问我的Web应用程序。

案例2(不起作用):

我在导入证书时动态创建了一个密钥库。

keytool -importcert  -alias abc -file cert.crt -keystore keystore2.jks

这里我只看到一个条目类型是“trustedcertEntry”

使用此密钥库,我无法访问我的Web应用程序。

问题:

什么是密钥条目类型“keyEntry”和“trustedcertEntry”以及为什么我的密钥库仅在我的条目类型为“keyEntry”时才有效

1 个答案:

答案 0 :(得分:8)

我对keytool的理解充其量是微不足道的,但我认为诀窍在于案例2,省略了-genkeypair,你没有生成必要的私钥。

在案例1中,您使用的步骤是:创建私钥对(公钥和私钥),然后将证书导入密钥库的可信证书。假设您在密钥库中有另一个证书加入私钥,尽管可信证书可能作为证书,或者您的应用程序未使用联合密钥对/证书文件。

我可以说' trustedCertEntry '是密钥库信任的证书。这对于允许证书链是必不可少的(例如:Root-CA签署Intermediate-CA1签署End-Cert1。如果没有Root-CA和Intermediate-CA1作为trustedCertEntry,则密钥库不信任最终证书)。 TrustedCertEntry没有与之关联的私钥,只有证书包含的公钥。

keyEntry (我认为!)是没有证书的公钥/私钥对。

privateKeyEntry 是具有关联的CA签名或自签名证书的公钥/私钥对。