ssl - 如何将cer文件导入jks文件

标签 ssl

我创建了一个 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/

相关文章:

基于 nginx 的 ssl 终止符上的 SSL 错误

c# - 在 C# 中使用 SSL (https) 使用 Web 服务

c# - 任何人都知道如何通过 GoDaddy 电子邮件服务器使用 System.Net.Mail 发送 SSL 电子邮件

apache - 如何将 Apache 2.4 配置从 SSL 支持更改为 TLS

wordpress - 强制使用 SSL 的 .htaccess 问题

amazon-web-services - 从本地主机通过 HTTPS 访问 AWS ALB

php - 如何使用 PHP 将图像返回到 https 请求

php - 无法刷新 Quickbooks API 中的访问 token 。检查 TLS 1.2 的 cURL 版本时出错

python - 如何在 python 3 中使用 urllib 请求解决 SSL 握手失败?

tomcat - tomcat 上的 verisign 证书不受远程服务器信任