我创建了一个 csr 文件并将该文件发送给我的证书团队,他们提供了链式 cer(内部签名证书)文件,我尝试使用 Ikeyman 接收 cer 文件,但它不允许我接收,我使用了 keytool 命令
keytool -import -trustcacerts -alias dev -file test.cer -keystore key.jks
它是将证书添加到签名者区域,但它应该在个人部分。
谁能帮助我如何将 cer 链证书添加到 JKS 个人部分。
最佳答案
您的术语仍然不标准且不清楚,所以我将列出基础知识,然后您确定问题出在哪里。
要使用您“自己的”证书,这是属于您的私钥的证书,在具有基本/普通 keystore 的 Java 中,您需要所有的私钥JKS 文件中的条目:
- 你的私钥和
- 将您的公钥绑定(bind)到您的证书,(通常)由 CA(证书颁发机构)颁发给您,正式称为“终端实体”证书,和
- 可能但很少没有,通常是一个,有时是几个其他证书,用于识别一个或多个 CA,需要形成从您的 EE 证书到受信任的 CA“根”或“ anchor ”证书的验证“链” .这些证书正式称为“中间”证书,但由于它们用于形成链,因此通常称为“链”证书。
并且为了避免虚假错误,您还必须在您的信任库中拥有相关的root/anchor 证书,默认为 JRE/lib/security/cacerts
,尽管可以对其进行修改.如果您的证书是由著名的 CA(例如 Verisign 或 GoDaddy)使用其根证书之一颁发的,则这些根证书在安装时会包含在 Java 中,除非您(或您的管理员之类的人)故意删除了它们。如果您的证书是由独立的私有(private) CA(例如您工作的企业或政府机构运行的 CA)颁发的,则其根目录应安装在您的 Java 中;这可能已经完成(可能由您的管理员或您过去完成),或者您可能需要现在就完成。
这允许您使用证书(AND key ,这是实现协议(protocol)所必需的)在 SSL/TLS 客户端(或使用 PFS 的服务器)等应用程序中证明您的身份或发送签名电子邮件,或解密数据 PK - 为您加密,例如 SSL/TLS 服务器或接收加密电子邮件。
执行此操作的直接方法是导入包含新 EE 证书和链证书的文件,可以是 PEM 序列或 p7b
格式,进入您用于生成 CSR 的相同的私钥条目;这意味着相同的 JKS 文件和相同的条目,用 -alias
指定或可能默认为 mykey
。您可以改用 JKS 的副本,或包含 privateKey 条目副本的另一个 JKS(可能除了其他条目之外,还可能重命名),但这样做很容易让您自己感到困惑。如果您正确执行此步骤,keytool
应该说Certificate reply was installed in keystore
NOT Certificate was added to keystore
。
如果您没有也无法获得所有证书——您的 EE 证书和链证书——在一个适合上述情况的文件中,您必须遵循稍微复杂的程序:
将链证书(如果从上到下一次有多个)导入到您的 keystore 中的 trustedCert 条目(或者可选地使用您的
cacerts
,但这通常是一个错误想法)使用不同的和唯一的别名而不是 privateKey 别名;这一步应该说Certificate was added to keystore
。然后 将您的 EE 证书导入 privateKey 条目(别名)。
keytool
会将链证书添加到 privateKey 条目。这被称为建立链,如果你做错了,你会得到一个关于“建立链失败”的错误。这一步应该说Certificate reply was installed in keystore
。
关于ssl - 如何将cer文件导入jks文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402699/