2008-09-23 43 views
16

我的Mac鑰匙串中只有代碼簽名擴展名(沒有其他擴展名)的自簽名根證書;我用它來簽署使用Apple的codeign工具從∞labs出來的所有代碼,並且它工作得很好。如何在我的Mac鑰匙串中使用證書籤署Java小程序?

我正在尋找擴展自己,做一些Java開發。我知道蘋果提供的密鑰倉庫實現從鑰匙扣讀取,我可以列出我有所有的證書「鏈:

keytool -list -provider com.apple.crypto.provider.Apple -storetype KeychainStore -keystore NONE -v 

但是,每當我嘗試使用的jarsigner籤一個簡單的測試JAR文件,我結束了:

$ jarsigner -keystore NONE -storetype KeychainStore -providerName Apple a.jar infinitelabs_codesigning_2 
Enter Passphrase for keystore: <omitted> 
jarsigner: Certificate chain not found for: infinitelabs_codesigning_2. infinitelabs_codesigning_2 must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain. 

我在做什麼錯?

(證書已經創建以下Apple's instructions for obtaining a signing identity

回答

1

我認爲你的密鑰庫條目別名必須是錯誤的。您是否使用條目類型爲「keyEntry」的密鑰庫對象的別名?同樣的命令對我來說是完美的。

從的jarsigner手冊頁:

使用的jarsigner簽名JAR文件,你必須爲包含生成簽名所需的私鑰的密鑰倉庫項的別名。

+0

keystore條目別名是正確的,如果它是第一個keytool -list命令顯示的別名,而不是我不知道的其他東西。 – millenomi 2008-09-27 09:23:01

0

您是否試過從蘋果鑰匙串中導出密鑰並通過keytool導入?也許蘋果沒有正確地將keytool與他們的鑰匙串集成在一起(不像他們擁有支持Java的卓越記錄)。

編輯:

嗯...我只是想採取從Java軟件商店,我導入蘋果鑰匙扣工作的關鍵(有公/私鑰),它不工作。所以乙醚我的導入是錯誤的,你不能以這種方式訪問​​蘋果鑰匙串,或者其他的事情是錯的:-)

0

我一直在嘗試這樣做。我經歷了一些扭曲,使用Keystore Explorer和I lost my public key. Can I recover it from a private key?,我能夠從.keystore文件中提取證書,私鑰和公鑰,並將它們移到OSX鑰匙串中。請注意,在這種情況下,我可能不需要公鑰。

如果我給jarsigner私鑰的名稱(而不是基於該密鑰的自簽名證書的名稱),那麼我會得到您提到的錯誤。

我的猜測則是,你的問題是以下

  • 您的鑰匙串中包含的證書,但沒有私人密鑰
  • 您的鑰匙串中包含的私有密鑰而不是證書
  • 「infinitelabs_codesigning_2一個「指的是私鑰而不是證書

我能夠使用你的jarsigner命令行(謝謝!)並獲得正確的結果,我用ja來檢查rsigner -verify。

相關問題