密钥库中条目类型“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”之间的区别的主要内容,如果未能解决你的问题,请参考以下文章