繁体   English   中英

Java证书和密钥库之间的关系

[英]Relationship between Java cert and keystore

我刚刚使用了keytool

keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048

......然后回答了它提示我的所有后续问题。 这会在我的本地目录中生成mykeys.jks密钥库。

我的问题: 这个JKS文件与其中包含的自签名证书的名称之间有什么关系? 这意味着,我现在在这个密钥库中有一个名为“mykeys”的SSL证书吗?

额外问题:单个密钥库(JKS文件)内部可以有多个证书吗? 如果是这样,我如何将这个名为my2ndcert的第二个SSL证书添加到同一个JKS文件中?

首先,我们应该清理一些术语。 您创建的是私钥/公钥证书对。 公钥证书包含您输入的所有信息,如您的电子邮件地址,姓名等,并绑定到私钥。

还可以将JKS文件格式视为可以存储多个私钥/公钥证书对的zip文件,也可以自己存储公钥证书。 JKS文件有自己的密码来打开它们,每个私钥/公钥对都有自己的密码,但大多数人为了简单起见将它们设置为相同的密码。

现在回答您的问题,在密钥库中,您创建的私钥将被称为自签名,因为这是您给它的别名。 您可以使用带有-importcert和-importkeystore标志的相同keytool命令添加更多私钥或仅添加公钥证书。 http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html

我强烈建议您使用此工具http://portecle.sourceforge.net/打开jks文件,看看里面有什么。

当你创建一个jks文件时,里面有一个私钥条目,如果没有为key指定任何别名,默认情况下它是myKey

您可以尝试列出jks文件以查看相同的密钥

keytool -list -keystore mykeys.jks -storepass <password to mykeys.jks>

自签名证书是您可以使用以下命令从此密钥存储区导出的内容

keytool -export -alias <keyalias> -file abc.cer -keystore mykeys.jks -storepass <password to mykeys.jks>

文件abc.cer是一个自签名证书

奖励答案:是的,您的一个密钥库可以包含具有不同别名的密钥数量以及多个证书(如果您导入它们)

此JKS文件与其中包含的自签名证书的名称之间有何关系?

JKS密钥库是证书,私钥或共享密钥的容器。 它究竟包含的内容取决于使用了哪些命令。 您可以有多个条目。 每个条目由其别名标识。

这意味着,我现在在这个密钥库中有一个名为“mykeys”的SSL证书吗?

不,这里, mykeys.jks只是文件名。 您可以根据需要重命名此文件,但不会影响其内容。

另外,“证书名称”可以具有多种含义,具体取决于上下文。

通常(不是特别在Java密钥库的上下文中)证书名称将是其主题专有名称(主题DN):这是标识其主题的内容。 这是通过回答问题填写的(“你的姓名是什么?”等等),或者你可以使用-dname预先填写这个问题。

主题DN中的CN(也是“你的姓和名是什么?”的答案)经常被各种证书管理工具用作证书的简称(如果有列表或表)。 对于服务器证书,还建议使用CN作为服务器的主要主机名(如果您没有使用主题备用名称扩展名,它甚至是强制性的)。

您可以使用-ext选项添加其他SAN(例如-ext SAN=dns:your.host.name )。 建议使用SAN(在所有时间),但许多人在使用keytool生成证书时不会这样做(可能是因为教程很少提及它,因为它仅与Java 7捆绑的版本一起引入)。

 keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048 

额外问题:单个密钥库(JKS文件)内部可以有多个证书吗? 如果是这样,我如何将这个名为my2ndcert的第二个SSL证书添加到同一个JKS文件中?

什么-genkey (在更新版本中更名为-genkeypair )的作用是创建密钥对,并将公钥包装到自签名证书中。 它会将它放在自selfsigned别名条目中(在您的示例中)。

如果mykeys.jks不存在,则会创建它。 如果它已经存在,它将被修改(仅当商店密码与现有文件的密码匹配时)。

如果您愿意,可以使用其他别名。 您还可以使用-importcert (或-import )导入证书(不带私钥)。

keytool -list将列出密钥库的内容,包括私钥条目或证书条目,所有这些都具有各自的别名。

请注意,如果您要使用非自签名证书,则需要从您生成的密钥对生成证书请求,并将CA颁发的证书重新导入该证书别名(事实上, 如果需要链,则需要在该条目中导入完整的链 )。 这将覆盖最初使用-genkeypair创建的自签名证书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM