我正在为各种客户开发多个Android应用程序。我为客户管理完整的开发生命周期,包括开发和发布到Google Play。
我很关心如何签署我为客户提供的应用程序。现在,我有1个密钥库,对于每个客户端,我创建了自己的私钥。
我担心的是,如果有一天客户想要拿走他们的Android应用并在没有我自己的情况下管理它,我需要给他们私钥,以便他们可以发布应用更新。
我的问题是,是否可以只使用1个密钥库来执行此操作,并以某种方式从密钥库中导出属于某个客户端的私钥并将其提供给它们,还是应该为每个客户端创建密钥库?如果前者是可能的,那么技术上如何完成?
对我来说理想的场景是能够将我的密钥库中的单个私钥导出到另一个密钥库中,并能够更改此密钥的密码,而不会影响密钥的有效性,以便它仍可用于更新将来制作的应用程序。
答案 0 :(得分:2)
您可以使用名为keytool的程序将私钥导入或导出到PKCS#12(.p12)文件中:
keytool -importkeystore -srckeystore existing-store.jks -destkeystore new-store.p12 -deststoretype PKCS12
此页面列出了密钥库可能实现的许多功能,即。更改其格式,并导出单个键:
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"
这意味着,当您的客户希望从密钥库中获取密钥时,只需将其导出即可。