我正在为不同的客户开发多个 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/