keytool:从几个.cer文件导入证书链

时间:2014-04-21 12:55:54

标签: java ssl certificate keytool

我们的IT部门给了我4个.cer文件,构成证书链:thawte_root.cer-> intermediate1_pem.cer-> intermediate2_pem.cer-> our_company.cer。

我需要使用our_company.cer签署一些代码(通过jarsigner)。

因此,我必须创建一个包含our_company.cer和链到根的密钥库。

我尝试使用记事本简单地将这4个文件连接成一个,然后导入生成的文件,但是keystore仅导入第一个文件,当我尝试启动jarsigner时,我得到了

"jarsigner: Certificate chain not found for: our_company. our_company must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain."

当我仅导入our_company.cer或逐个导入每个证书时,我收到相同的消息。

所以问题是:如何将4个证书作为一个链导入?

提前致谢。维塔利彼得。

2 个答案:

答案 0 :(得分:1)

  1. 将所有证书链接到一个文件中(顺序是从根到根)
    cat intermediate2_pem.cer intermediate1_pem.cer thawte_root.cer > chain.cer
  2. 运行此openssl命令
    openssl pkcs12 -export -in our_company.cer -inkey private.key -out company.p12 -name company -CAfile chain.pem -caname sub2 -caname sub1 -caname root -chain
  3. 创建密钥库
    keytool -importkeystore -destkeystore company.keystore -srckeystore company.p12 -srcstoretype PKCS12 -alias company
  4. 您的密钥库将准备就绪(选择密码并在所有情况下输入密码)。您还需要准备好private.key

    有关详细信息,请参阅this link

答案 1 :(得分:0)

您可能知道,代码签名使用public-key encryption。要对代码进行签名,您需要拥有私钥,而希望使用代码的客户必须信任相应的公钥。

您拥有的CER文件是与公钥对应的证书文件。使用keytool -importcert导入它们而没有相应的私钥时,它们将作为可信证书导入。 (有关详细信息,请参阅the documentation。根据您的系统设置,您可能不需要全部导入它们 - 例如,您可能已经信任Thawte证书。)

由于您希望将代码签名为YourCompany,因此您需要与our_company.cer对应的私钥 - 我想您的IT部门可以提供此功能,因为它将用于生成发送给Thawte的证书签名请求。如果他们不愿意将此消息传递给您,您需要使用keytool -genkeypair生成自己的私钥/公钥对,生成带keytool -certreq的CSR并将其发送给您可以发布的IT部门你是证书。在这种情况下,最终的信任链是thawte_root.cer-> intermediate1_pem.cer-> intermediate2_pem.cer-> our_company.cer-> your_department.cer