如何在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商店(有一个私钥/公钥)中使用一个有效的密钥,但是它不起作用。因此,以太我的导入是错误的,我们不能以这种方式访问​​苹果钥匙串,否则其他地方出了问题:-)