我刚刚使用了keytool
:
keytool -genkey -keyalg RSA -alias selfsigned -keystore mykeys.jks -storepass password -validity 360 -keysize 2048
...然后回答了它提示我的所有后续问题。这会在我的本地目录中生成mykeys.jks
密钥库。
我的问题:此JKS文件与其中包含的自签名证书的名称之间的关系是什么?含义,我现在是否有SSL cert在这个密钥库中命名为“mykeys”?
奖金问题:单个密钥库(JKS文件)中是否可以包含多个证书?如果是这样,我如何向这个相同的JKS文件添加名为my2ndcert
的第二个SSL证书?
答案 0 :(得分:5)
首先我们应该清理一些术语。您创建的是私钥/公钥证书对。公钥证书包含您输入的所有信息,如您的电子邮件地址,姓名等,并绑定到私钥。
还可以将JKS文件格式视为可以存储多个私钥/公钥证书对的zip文件,也可以自行存储公钥证书。 JKS文件有自己的密码来打开它们,每个私钥/公钥对都有自己的密码,但大多数人为了简单起见将它们设置为相同的密码。
现在回答您的问题,在密钥库中,您创建的私钥将被称为自签名,因为它是您提供的别名。您可以使用带有-importcert和-importkeystore标志的相同keytool命令添加更多私钥或仅添加公钥证书。 http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html
我强烈建议您使用此工具http://portecle.sourceforge.net/打开jks文件,看看里面有什么。
答案 1 :(得分:4)
当你创建一个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是自签名证书
奖励答案:是的,您的一个密钥库可以包含多个具有不同别名的密钥 ,如果您导入它们也可以包含多个证书
答案 2 :(得分:4)
此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进入该别名(事实上,如果需要链,则该条目中为you'll need to import the full chain)。这将覆盖最初使用-genkeypair
创建的自签名证书。