密钥库和 cacerts 之间的别名相同,密钥不同?或者,如何在keystore/cacerts之间设置export/import键?

same alias different key OK between keystore and cacerts? Or, how to export/import key between keystore/cacerts?

在带有 java 1.7 的 Linux Centos 系统上,是否可以在 keystore.jks 中使用别名为 xyz123 的密钥和在中使用具有相同别名的不同密钥? cacerts.jks?或者,会有什么东西坏掉吗?

我在 keystore.jks 文件中删除了别名 'xyz123' 的密钥(因为它是 1024 位),然后使用别名 'xyz123' 为密钥库创建了一个新密钥(2048 位) :

keytool -keysize 2048 -genkey -alias xyz123 -keyalg RSA 
-dname "CN=mydomain.com,OU=GF,O=MyCorp,
L=MyCity,ST=MyState,C=US" -validity 7300 -keypass 
mypwd -storepass mypwd -keystore keystore.jks

但现在我注意到别名 xyz123(旧密钥)也存在于 cacerts.jks 中。因此,现在相同的别名指向 keystore 和 cacerts 之间的不同密钥。恐怕如果我重复上面的代码但对于 cacerts,虽然新密钥进入 cacerts.jks,但同样的情况仍然存在(例如,相同的别名指向密钥库和 cacerts 之间的不同密钥)。

有没有办法执行上面的代码,但以某种方式将 keystore 和 cacerts 作为行参数包含在内?

或者,也许我需要知道的是如何以某种方式将密钥生成为单独的文件,然后如何导入到每个密钥库和 cacerts 中。

您可以使用 -importkeystore 选项将新生成的密钥对导入 cacerts.jks 密钥库。

但是,cacerts.jks 不应包含私钥。它是 "trust anchors" 的集合——可用于验证其他证书的证书。我会向 cacerts.jks 推荐 exporting only the new certificate from keystore.jks, and importing,而不是完整的密钥对。