2013-07-12 208 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