如何在我的Mac钥匙串中使用证书签署Java小程序?


16

我的Mac钥匙串中只有代码签名扩展名(没有其他扩展名)的自签名根证书;我用它来签署使用Apple的codeign工具从∞labs出来的所有代码,并且它工作得很好。

我正在寻找扩展自己,做一些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命令显示的别名,而不是我不知道的其他东西。 27 9月. 082008-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。