2015-04-01 452 views
0

我创建了一个csr文件,并将该文件发送给我的证书小组,他们给出了链式cer(内部有效证书)文件,我尝试使用Ikeyman接收cer文件,但它不会让我接受,我用keytool命令如何将cer文件导入到jks文件

的keytool -import -alias -trustcacerts开发-file test.cer -keystore key.jks

它的证书添加到签名区,但这应该是在个人部分。

任何人都可以帮助我如何添加一个cer链证书到JKS个人部分。

+0

你是什么意思的“个人部分”? JKS文件没有章节,只有一个或多个条目。有两种类型的条目:privateKeyEntry和trustedCert。每个都由“别名”标识。如果您有一个privateKey条目(您必须生成CSR),并且您会收到该密钥的证书或链(您使用CSR获取该证书),并且您希望将该证书链用于SSL等事情,那么您需要将该证书链(文件)*导入该私钥条目*。 – 2015-04-02 03:19:50

+0

谢谢戴夫,我尝试导入cer文件到jks中,运行keytool命令(keytool -import -trustcacerts -alias dev -file test.cer -keystore key.jks)后,我在Ikeyman中打开我的jks,证书被添加,它被添加到歌手证书上,但它应该在个人证书上。我需要使用相同的JKS文件,我创建csr文件来导入这个cer文件,或者我可以使用任何JKS – 2015-04-02 07:22:43

回答

0

您的术语仍然不够标准,也不清楚,因此我将介绍基础知识并确定问题所在。

要使用“自己的”证书,这是属于你的,在Java中的基本/一般密钥库专用密钥的证书,你需要有都在一个JKS文件中的一个专用密钥进入

  • 您的专用密钥
  • 结合你的公钥给您的证书,(通常)由CA(认证机构)印发给你们,正式称为“终端实体”证书,
  • 从您的EE证书到受信任的CA“根”或“锚”证书形成验证“链”所需的可能但很少没有任何证书(通常是一个或一些其他证书)来标识一个或多个CA 。这些证书被正式称为“中级”证书,但由于它们被用来形成一个连锁,所以它们通常被称为“连锁”证书。

,并避免默认为JRE/lib/security/cacerts虽然可以修改虚假的错误,你还必须有相关的根/锚证书在您的信任。如果您的证书是由知名的CA(如Verisign或GoDaddy)使用其根源发布的,那么在安装Java时除非您(或您的管理员等人)有意删除它们,否则它们将包含在Java中。如果您的证书由独立的私人CA(例如您所工作的企业或政府机构运营的CA)颁发,则其根应该安装在您的Java中;这可能已经完成(可能是由您的管理员或您以前的),或者您现在可能需要这样做。

这允许您使用证书(和钥匙,这是落实协议需要),以证明在应用您的身份,如SSL/TLS客户端(或服务器使用PFS)或发送签名的电子邮件,或者对数据进行解密对您进行PK加密,如SSL/TLS服务器或接收加密电子邮件。

直接的方式做到这一点是导入一个文件,其中包含新的EE证书和链证书(S),要么只是一个PEM序列或p7b格式,您用于生成相同的专用密钥进入 CSR;这意味着相同的JKS文件相同的条目,用-alias指定或可能默认为mykey。你可以改为使用JKS的副本或另一个包含privateKey条目副本的JKS(可能除了其他条目之外还可能重命名),但是做这样的事情你可能很容易混淆你自己。如果你这样做是正确的,keytool应该说Certificate reply was installed in keystore不是Certificate was added to keystore

如果您没有且无法获得所有证书 - 您的EE证书和连锁证书 - 在一个适用于上述文件的文件中,您必须执行一个稍微复杂的过程:

  • 进口链条证书(S),如果多一个从上往下的时候,使用不同 trustedCert在你的密钥仓库项(或任意你cacerts代替,但是这通常是一个坏主意)和唯一的别名不是privateKey别名;此步骤应该说Certificate was added to keystore

  • 然后将您的EE证书导入privateKey条目(别名)。 keytool会将链证书添加到privateKey条目中。这被称为构建链,如果你做错了,你会得到一个关于“无法建立链”的错误。这一步应该说是Certificate reply was installed in keystore