如何使用GPG制作的私钥对apk进行签名?

时间:2012-06-27 03:28:16

标签: android gnupg jarsigner

这甚至可能吗?我有一个我已经用GPG制作的密钥对,但我找不到用这个密钥签名的方法。我真的不想用keytool或者其他任何东西制作新的密钥;我宁愿使用我现在拥有的钥匙。谁知道我怎么能这样做?提前谢谢。

3 个答案:

答案 0 :(得分:3)

我非常怀疑GPG会生成可供jarsigner使用的密钥。 可能可以编写转换器来执行此操作,但只需咬住子弹并生成新密钥就不那么容易了。执行此操作的命令只是

keytool -genkey -alias mynickname -validity 20000 -keystore ~/.android/my-keystore

(ps备份密钥,并确保你不要忘记密钥库密码或密钥密码。有太多悲伤的故事,那些将应用程序推向市场然后被遗忘的人或者丢失了密码。)

答案 1 :(得分:0)

您确实需要使用jarsigner签名。但是jarsigner实际上比您想象的要灵活一些。如果您已经有要使用的签名密钥,则可以将其从gpg中导出,然后将其导入到Java密钥库中,然后以这种方式签名。如果您想尝试这样做,可以尝试使用keytool,但是Keytool Explorer的获取要容易得多,因为keytool有很多选项。

Jarsigner实际上非常灵活。 This Document描述了您可以创建自己的提供程序的过程。令我感到惊讶的是,已经没有一个人使用GPG密钥库了。 There is a way to do it with a Yubikey是我了解所有这些的唯一原因-我的签名密钥已安全地锁定在我的yubikey中,即使我也无法找到它们(是的,我在某个地方有安全的备份)。

答案 2 :(得分:0)

我也只想管理OpenPGP密钥。所以这是我的方式。

openpgp2ssh

首先从Monkeysphere安装它。

sudo apt install monkeysphere

注意:openpgp2ssh仅在密钥不受密码保护和RSA密钥的情况下有效。因此,可能有必要删除保护。

现在,导出PGP密钥并将其移交给openpgp2ssh:

gpg --list-keys # show your keys with keyid.
gpg --export-secret-subkeys your@email | openpgp2ssh $SubKeyId > id_rsa
openssl rsa -in id_rsa -outform pem > key.pem
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt