密钥库中条目类型“keyEntry”和“trustedCertEntry”之间的区别

Posted

技术标签:

【中文标题】密钥库中条目类型“keyEntry”和“trustedCertEntry”之间的区别【英文标题】:Difference between Entry Type "keyEntry" and "trustedCertEntry" in a keystore 【发布时间】:2015-04-17 03:08:18 【问题描述】:

我在这方面的知识不多,但我仍然尝试通过谷歌搜索来做事。这是我面临的问题。

案例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】:

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

在案例 1 中,您使用的步骤是:创建一个私钥对(公钥和私钥),然后将证书导入到密钥库的受信任证书中。假设您在密钥库中有另一个与私钥连接的证书,尽管受信任的证书可能正在充当证书,或者您的应用程序未在同一文件中使用连接的密钥对/证书。

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

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

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

【讨论】:

以上是关于密钥库中条目类型“keyEntry”和“trustedCertEntry”之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

mysql 统计表中条目数量的几种方法

WebLogic配置自己定义密钥库和SSL的操作手冊

一个ListView怎么展示两种样式

Android 手机卫士10--应用管理器

密钥库类型:使用哪一种?

Java:从密钥库文件中确定密钥库的类型