【发布时间】:2015-05-30 14:41:16
【问题描述】:
keytool 生成的密钥库包含使用以下命令的自签名证书,这令人困惑:
keytool -genkey -keyalg RSA -keysize 1024 -keystore bob.keystore
生成自签名证书没有意义,因为您需要一个受信任的 CA 来签署您的证书请求。如何生成非自签名密钥库?
【问题讨论】:
keytool 生成的密钥库包含使用以下命令的自签名证书,这令人困惑:
keytool -genkey -keyalg RSA -keysize 1024 -keystore bob.keystore
生成自签名证书没有意义,因为您需要一个受信任的 CA 来签署您的证书请求。如何生成非自签名密钥库?
【问题讨论】:
keytool -genkey 是一个双重操作:它生成一个密钥对,并将其包装在一个自签名证书中。
拥有这个自签名证书实际上只是一种方便,部分与存储格式有关,如果您想将该密钥对用于 CA 颁发的证书,这只是暂时的。
您需要使用您在使用-genkey 时输入的信息(该信息最终在自签名证书中)从该密钥对中提取证书请求。重复使用您在 -genkey 中使用的别名:
keytool -certreq -alias somename -file somename.csr -keystore mykeystore.jks
将 CSR 发送给您的 CA,当您取回证书时,使用相同的别名重新导入它。这将使用keytool -importcert 覆盖最初生成的自签名证书。请注意,如果有中间证书,您可能需要一次导入整个链,如this answer 末尾所述。
【讨论】:
自签名证书在许多情况下都很有价值,例如应用程序实例之间的通信。在这种情况下,向 CA 支付签名证书的费用可能会非常昂贵。
但是,如果您想要一个公认的 CA 的签名,则需要从 CA 获取您的证书。您不能仅使用 keytool 创建由公认 CA 签名的证书。在您选择的搜索引擎中搜索“SSL 证书”。大多数证书都是付费的,例如 GeoTrust。其他的,比如 StartSSL 或即将推出的 LetsEncrypt,要么是免费的,要么是免费的。
【讨论】: