由Google Play签名的应用:没有密钥库,只有.p12

时间:2018-06-05 21:22:20

标签: android google-play android-app-signing

我正在尝试将现有应用切换为Google Play的应用签名。对于使用密钥库文件的人,有一篇包含很好说明的帖子:How to enable Google Play App Signing

我的问题是,我只有一个.p12文件,而不是密钥库,我无法将其导入密钥库文件(长篇故事)。

使用Google Play进行应用签名的第一步是“将您的应用签名私钥导出到纯文本PEM文件。”我这样做了,现在我的原始PEM文件来自我原创。 P12。从谷歌的说明看来,他们似乎只需要PEM文件和我的私钥,而不是密钥库文件。

我的问题是如何使用 pepk 工具从PEM文件创建Google要求的加密应用签名私钥。

2 个答案:

答案 0 :(得分:1)

关于将PEM转换为密钥库的

Oracle has written complete instructions。它还涵盖了p12。这可能会做你想要的。

不幸的是,搜索引擎并不是很容易找到的,因为他们称之为#J; JKS"而不是密钥库。

简而言之:

使用以下命令将证书从PEM转换为PKCS12: openssl pkcs12 -export -out eneCert.pkcs12 -in eneCert.pem

您可以忽略此命令发出的警告消息。 输入并重复导出密码。 使用以下命令创建并删除空信任库:

keytool -genkey -keyalg RSA -alias endeca -keystore truststore.ks
keytool -delete -alias endeca -keystore truststore.ks

-genkey命令创建如下所示的默认证书。 (这是一个临时证书,随后被-delete命令删除,因此您在此处输入的信息无关紧要。)

Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: 
What is the name of your organizational unit?
[Unknown]:  
What is the name of your organization?
[Unknown]:  
What is the name of your City or Locality?
[Unknown]: 
What is the name of your State or Province?
[Unknown]: 
What is the two-letter country code for this unit?
[Unknown]: 
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes

Enter key password for <endeca>
      (RETURN if same as keystore password):
Re-enter new password:

使用以下命令将CA导入信任库:     keytool -import -v -trustcacerts -alias endeca-ca -file eneCA.pem -keystore truststore.ks

输入密钥库密码。 在提示符下,&#34;信任此证书?&#34;输入是。 使用以下命令创建一个空的Java KeyStore:

keytool -genkey -keyalg RSA -alias endeca -keystore keystore.ks
keytool -delete -alias endeca -keystore keystore.ks

-genkey命令创建如下所示的默认证书。 (这是一个临时证书,随后被-delete命令删除,因此您在此处输入的信息无关紧要。)

Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: 
What is the name of your organizational unit?
[Unknown]:  
What is the name of your organization?
[Unknown]:  
What is the name of your City or Locality?
[Unknown]: 
What is the name of your State or Province?
[Unknown]: 
What is the two-letter country code for this unit?
[Unknown]: 
Is CN="Unknown", OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes

使用以下命令将私钥导入空JKS:

keytool -v -importkeystore -srckeystore eneCert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.ks -deststoretype JKS

答案 1 :(得分:0)

感谢尼克,这工作得很好。 使用创建的 keystore.ks,我可以使用 pepk jar 命令。 也许作为在同一问题中运行的人的扩展:pepk jar 需要一个“别名”作为参数。要从 keystore.ks 中获取别名,您可以使用以下命令:

keytool -v  -list  -keystore keystore.ks

这将返回存储在 .ks 文件中的信息。您可以在那里看到属性别名。就我而言,该值只是 1,因为原始 .p12 文件没有别名。

所以我的最终 pepk 命令如下所示:

java -jar pepk.jar --keystore=keystore.ks --alias=1 --output=encrypted_private_key_path --encryptionkey=SomeKeyWhichIsDisplayedInThePlayConsoleWindow