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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

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

我正在寻找扩展自己,做一些Java开发。我知道Apple提供了一个从Keychain读取的KeyStore实现,并且我可以列出所有在'chain'中拥有的证书:

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获取签名身份的说明创建。)

提问于
用户回答回答于

你有没有尝试从苹果钥匙串中导出密钥并通过keytool导入?也许苹果没有正确地将keytool与他们的钥匙串集成在一起(不像他们拥有支持Java的卓越记录)。

嗯...我刚刚尝试了从我导入到苹果钥匙串(具有私钥/公钥)的java商店中工作的密钥,但它不起作用。所以乙醚我的导入是错误的,你不能以这种方式访问​​苹果的钥匙串,或其他事情是错的:-)

用户回答回答于

我认为你的密钥库入口别名必须是错误的。您是否使用条目类型为“keyEntry”的密钥库对象的别名?同样的命令对我来说是完美的。

从jarsigner手册页:

使用jarsigner签署JAR文件时,您必须为包含生成签名所需的私钥的密钥库条目指定别名。

扫码关注云+社区