我正在尝试将现有应用切换为Google Play的应用签名。对于使用密钥库文件的人,有一篇包含很好说明的帖子:How to enable Google Play App Signing
我的问题是,我只有一个.p12文件,而不是密钥库,我无法将其导入密钥库文件(长篇故事)。
使用Google Play进行应用签名的第一步是“将您的应用签名私钥导出到纯文本PEM文件。”我这样做了,现在我的原始PEM文件来自我原创。 P12。从谷歌的说明看来,他们似乎只需要PEM文件和我的私钥,而不是密钥库文件。
我的问题是如何使用 pepk 工具从PEM文件创建Google要求的加密应用签名私钥。
答案 0 :(得分:1)
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