java - 多个 keystore 与多个 key 以及 key 的导出/导入

标签 java android code-signing keystore private-key

我正在为不同的客户开发多个 Android 应用程序。我为客户管理整个开发生命周期,包括开发和发布到 Google Play。

我担心应该如何签署我为客户制作的申请。现在,我有 1 个 keystore ,并且为每个客户端创建他们自己的私钥。

我担心的是,如果有一天客户想要使用他们的 Android 应用程序并在没有我的情况下自行管理它,我需要向他们提供私钥,以便他们可以发布应用程序的更新。

我的问题是,是否可以仅使用 1 个 keystore 来执行此操作,并以某种方式从 keystore 导出属于某个客户端的私钥并将其提供给他们,或者我应该为每个客户端创建一个 keystore ?如果前者是可能的,那么技术上是如何实现的?

对我来说理想的场景是能够将单个私钥从我的 keystore 导出到另一个 keystore ,并且能够更改该 key 的密码而不影响 key 的有效性,以便它将来仍可用于更新其制作的应用程序。

最佳答案

您可以使用名为 keytool 的程序将私钥导入或导出到 PKCS#12 (.p12) 文件中:

keytool -importkeystore -srckeystore existing-store.jks -destkeystore new-store.p12 -deststoretype PKCS12

此页面列出了 keystore 可以实现的许多功能,即。更改其格式并导出单个 key :

http://www.startux.de/index.php/java/44-dealing-with-java-keystoresyvComment44

还有一个名为 Keystore Explorer 的应用程序,它可以完成相同的工作,但使用 GUI:

http://keystore-explorer.sourceforge.net/

您可以更改密码,而不影响签名能力:

keytool -keypasswd -alias "key name" -keypass "old password" -new "new password" -keystore "keystore path"

这意味着,当您的客户想要从您的 keystore 中获取 key 时,只需将其导出即可。

关于java - 多个 keystore 与多个 key 以及 key 的导出/导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638569/

相关文章:

java - 如何在 Jasmine 中打印长条?

android - 设计方法 : android and web service

Android:如何与另一个应用程序集成?

ios - 代码签名错误 : bundle format unrecognized, 无效,或不合适

windows - 适用于 64 位 Windows 7 的廉价 Windows 驱动程序签名

winapi - 我可以从 DLL 中删除数字签名吗?

java - 类似于非 EJB 的 Spring 中的 EJB 布线

java - 使用 hibernate 将数据集合持久保存/更新到数据库中

java - 多少钱-XX :MaxPermSize size i can mention for 4GB and 8GB Ram and calculation for this?

android - 集成 HalpStack 后生成签名的 APK 警告即将到来