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

blu*_*ggy 12 certificate keystore jks keytool ssl-certificate

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

案例1(工程):

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

以下是步骤:

keytool -genkeypair  -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)

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

现在我导入证书:

keytool -importcert -alias abc -file cert.crt -keystore keystore.jks
Run Code Online (Sandbox Code Playgroud)

现在我看到另一个trype"trustedcertEntry"条目.

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

案例2(不起作用):

我在导入证书时动态创建密钥库.

keytool -importcert  -alias abc -file cert.crt -keystore keystore2.jks
Run Code Online (Sandbox Code Playgroud)

在这里,我只看到一个条目类型是"trustedcertEntry"

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

题:

什么是密钥条目类型"keyEntry"和"trustedcertEntry"以及为什么我的密钥库仅在我有条目类型"keyEntry"时才起作用

duc*_*der 9

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

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

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

一个keyentry指南(我想!)是没有证书的公共/私有密钥对.

一个privateKeyEntry是一个公共/私有密钥对相关的CA签名或自签名证书.