如何将私钥和公钥(pvk,spc)和证书(cer)导入密钥库?

时间:2013-07-12 22:50:07

标签: java certificate

我们拥有从Thawte(.cer,pvk和spc文件)购买的Microsoft Authenticode证书,并希望重用它们来签署java jar文件。见http://www.thawte.com/code-signing/index.html 换句话说,我不想再进行第二次(和不必要的)购买 - 购买下面列出的Java代码签名证书。 注意: Thawte允许这样但不支持它。

Thawte_Code_Signing_Intermediate_CA.cer, Thawte_Primary_Intermediate_Root_CA.cer, Thawte_Primary_Root_CA_Cross.cer

我有pvk和spc文件。

如何将私钥和公钥以及证书导入密钥库?

按照这里的步骤操作 http://docs.oracle.com/javase/tutorial/security/toolsign/signer.html

keytool -import -trustcacerts -keystore mykeystore -alias primary_root -file Thawte_Primary_Root_CA_Cross.cer
keytool -import -trustcacerts -keystore mykeystore -alias intermediate_root -file Thawte_Primary_Intermediate_Root_CA.cer
keytool -import -trustcacerts -keystore mykeystore -alias myalias -file Thawte_Primary_Intermediate_Root_CA.cer

尝试使用Netbeans7.3通过将其指向密钥库并执行构建来对jar进行签名:

  

jarsigner:找不到证书链:primary_root。   primary_root必须引用包含a的有效KeyStore键条目   私钥和相应的公钥证书链。

我意识到我必须将私钥和公钥以及证书导入密钥库,但目前尚不清楚如何。 像这样谈论.crt文件的帖子,所以看起来并不一样。 https://stackoverflow.com/a/8224863/398348https://stackoverflow.com/a/9131421/398348

  

无法加载PKCS7对象

2 个答案:

答案 0 :(得分:3)

更多细节会有所帮助,但是您在此处列出的文件似乎是CA证书链证书,例如没有任何文件名似乎表明它包含代码签名证书。从文件名中猜测,您需要将.spc和.pvk文件导入密钥库。

您必须有权访问OpenSSL命令行工具才能执行此操作。使用Linux / Unix机器或安装CygWin来访问它。

将spc文件转换为更合理的格式:

openssl pkcs7 -inform DER -in mycert.spc -print_certs -out mycert.crt

使用OpenSSL将密钥对(正确的.crt和相应的.pvk文件)转换为PKCS#12密钥库

openssl pkcs12 -export -in mycert.crt -inkey mycert.pvk \
           -out mycert.p12 -name some-alias

将PKCS#12格式文件转换为Java密钥库格式

keytool -importkeystore \
    -deststorepass changeit -destkeypass changeit -destkeystore mycert.keystore \
    -srckeystore mycert.p12 -srcstoretype PKCS12 -srcstorepass some-password \
    -alias some-alias

另见:

http://www.drh-consultancy.demon.co.uk/pkcs12faq.html

importing an existing x509 certificate and private key in Java keystore to use in ssl

答案 1 :(得分:0)

很明显,在尝试签名jar时,您输入了错误的别名“primary_root”。

使用

检查您的别名
keytool.exe -list -keystore YOUR_KEYSTORE -storetype YOUR_STORE_TYPE