如何使用我的Mac密钥链中的证书对Java Applet进行签名?

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

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

我有一个自签名的根证书,只有我的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.

我究竟做错了什么?

提问于
用户回答回答于

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

用户回答回答于

我认为你的密钥存储项别名一定是错误的。你是否在使用密钥存储对象的别名,其条目类型为“keyEntry”?同样的命令对我来说非常有效。

在jarsigner手册页面中:

在使用jarsigner对JAR文件进行签名时,必须为keystore条目指定别名,其中包含生成签名所需的私钥。

扫码关注云+社区