如何在Mac钥匙串中使用证书签署Java小程序?
时间:2020-03-06 14:37:39 来源:igfitidea点击:
我的Mac钥匙串中只有一个带有代码签名扩展名(没有其他扩展名)的自签名根证书;我使用它使用Apple的codesign工具对所有来自实验室的代码进行签名,并且效果很好。
我一直在扩展自己,并进行一些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的获得签名身份的说明创建的。)
解决方案
我认为密钥库条目别名一定是错误的。我们是否正在使用条目类型为" keyEntry"的密钥库对象的别名?相同的命令对我来说效果很好。
从jarsigner手册页:
When using jarsigner to sign a JAR file, you must specify the alias for the keystore entry containing the private key needed to generate the signature.
我们是否尝试过从Apple钥匙串中导出密钥并通过keytool进行导入?也许Apple尚未将Keytool与他们的钥匙串正确集成(不像他们在支持Java方面拥有出色的记录)。
编辑:
嗯...我只是尝试从我导入到Apple钥匙串的Java商店(有一个私钥/公钥)中使用一个有效的密钥,但是它不起作用。因此,以太我的导入是错误的,我们不能以这种方式访问苹果钥匙串,否则其他地方出了问题:-)