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

Java keytool:从多个.cer文件导入证书链,java,ssl,certificate,keytool,Java,Ssl,Certificate,Keytool,我们的IT部门给了我4个.cer文件,它们构成了证书链:thawte_root.cer->intermediate1_pem.cer->intermediate2_pem.cer->Our_company.cer 我需要使用我们的_company.cer签署一些代码(通过jarsigner) 因此,我必须创建一个密钥库,包含我们的_company.cer和到根的链 我曾尝试使用记事本将这4个文件连接成一个文件,然后导入结果文件,但keystore只导入第一个文件,当我尝试启动jarsigner时

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

我需要使用我们的_company.cer签署一些代码(通过jarsigner)

因此,我必须创建一个密钥库,包含我们的_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."
当我只导入我们的_company.cer或逐个导入每个证书时,我会收到相同的消息

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


提前谢谢。Vitaly.

您可能知道,代码签名使用。要对代码进行签名,您需要具有私钥,并且希望使用您的代码的客户端必须信任相应的公钥

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

由于您希望以公司身份对代码进行签名,因此需要与我们的_company.cer相对应的私钥-我想您的IT部门可以提供此私钥,因为它将用于生成发送给Thawte的证书签名请求。如果他们不愿意将此信息传递给您,您需要使用
keytool-genkeypair
生成您自己的私钥/公钥对,使用
keytool-certreq
生成CSR,并将其发送给您的it部门,然后由it部门向您颁发证书。在这种情况下,最后一个信任链是thawte_root.cer->intermediate1_pem.cer->intermediate2_pem.cer->our_company.cer->your_department.cer

  • 将所有证书链接到一个文件中(顺序为sub to root)
    cat intermediate2\u pem.cer intermediate1\u pem.cer thawte\u root.cer>chain.cer
  • 运行此openssl命令
    openssl pkcs12-导出-在我们的_company.cer-inkey private.key-out company.p12-名称公司-CAfile chain.pem-卡纳姆sub2-卡纳姆sub1-卡纳姆根链
  • 创建密钥库
    keytool-importkeystore-destkeystore company.keystore-srckeystore company.p12-srcstoretypk PKCS12-alias company
  • 您的密钥库将准备就绪(选择密码并在所有情况下键入)。您还需要准备好您的
    private.key


    有关更多详细信息,请参阅

    ypu是否可以编辑您的答案,以反映步骤1是否输出chain.cer以及步骤2是否搜索chain.pem。可能,步骤1中的所有证书都应该采用pem格式,否则在步骤2中会出现错误“无法加载证书”(解释如下:)