2013-07-12 205 views
1

我们有从Thawte(.cer,pvk和spc文件)购买的Microsoft Authenticode证书,并且希望重用它们来签署java jar文件。请参阅​​ 换句话说,我不想做第二次(也是不必要的)购买 - 购买下面列出的Java代码签名证书。 注意: Thawte允许但不支持它。如何将私钥和公钥(pvk,spc)和证书(cer)导入密钥库?

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: Certificate chain not found for: primary_root. primary_root must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

我意识到我必须将私钥和公钥以及证书导入密钥库,但不清楚如何。 像这样的.crt文件的讨论这样的帖子,所以它似乎不是同一件事。 https://stackoverflow.com/a/8224863/398348https://stackoverflow.com/a/9131421/398348

unable to load PKCS7 object

回答

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

+0

运行的第一个命令给出了错误'无法加载PKCS7对象 4372:错误:0D0680A8:ASN1编码程序:ASN1_CHECK_TLEN:错标签:\加密\ ASN1 \ tasn_dec .c:1319: 4372:错误:0D07803A:asn1编码例程:ASN1_ITEM_EX_D2I:嵌套asn1错误:。\ crypto \ asn1 \ tasn_dec.c:381:Type = PKCS7' – likejiujitsu

+0

我也面临同样的错误,任何一个解决此问题 – anish

+0

这适用于我的Godaddy Certs – Cesar

0

您键入错误的别名 “primary_root” 尝试登录您的罐子时,它是明确的。

检查你的别名,使用

keytool.exe -list -keystore YOUR_KEYSTORE -storetype YOUR_STORE_TYPE