回答
通过Keytool存储专用和公用密钥对生成的密钥存储文件。存储在密钥库中的每个对或条目都由唯一的别名引用。简而言之:
密钥仓库项=私有+公共密钥 对=由一个别名
密钥库保护其个人密码的每个私钥,并保护整个密钥仓库与完整性鉴定一个(可能不同的)密码。例如,当您使用Eclipse Android工具的导出签名应用程序包选项签署Android应用程序时,系统会要求您先选择一个密钥存储库,然后要求从该密钥存储库中选择一个别名/入口/对。为密钥库和所选别名提供密码后,应用程序将被签名,并且该别名的公钥(证书)将嵌入到APK中。
现在回答你的问题,你只能发布一个更新,是由具有相同的别名再次登录更新与别名“foo”签名的应用程序。丢失存储别名的密钥库会阻止您发布应用的更新版本。
然而有签订了新别名的应用程序的方式,但它涉及克隆使用密钥库中现有的别名keytool -keyclone:
创建一个新的密钥仓库项,其中 具有相同私钥和 证书链作为原始 条目。
原始条目由 别名标识(如果未提供 ,则默认为“mykey”)。新的(目标) 条目由dest_alias标识。如果没有 目标别名在 提供的命令行,则提示用户 它。
如果私钥密码是 从密钥库密码不同, 则该条目将仅 有效的keypass提供克隆。这是 用于保护与别名关联的私钥的密码。如果 在 命令行中没有提供密钥密码,并且私钥 密码与 密钥存储区密码不同,则用户需要 提示输入该密码。在 复制项的私钥可以与 来保护不同的密码,如果需要的话。如果 在 命令行中没有提供新的选项,则会提示用户输入 新条目的密码(并且可能 选择让它与 克隆条目的私钥相同)。
的更多信息:
http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html
http://developer.android.com/guide/publishing/app-signing.html
- 1. 显示来自密钥库证书的别名密码
- 2. 访问证书密钥库
- 3. 在证书密钥库中找不到别名
- 4. 如何检查密钥库文件中的证书名称和别名?
- 5. 在应用程序内检查密钥库别名和KeyStore证书信息名
- 6. 创建从证书,中级证书和私有密钥库密钥
- 7. 将密钥和SSL证书导入到java密钥库
- 8. Java自签名证书和密钥库使用
- 9. “无法找到解密的证书和私钥”证书pfx pkcs#12私钥
- 10. 如何将JKS证书/密钥转换为BouncyCastle证书/密钥
- 11. 无效的密钥库格式创建密钥库和证书附接到它
- 12. 生成带有pem证书和.key私钥的pkcs12密钥库?
- 13. 从私钥和CA证书包创建java密钥库
- 14. GoDaddy SSL证书密钥库安装Tomcat7
- 15. 带密钥库证书的ARM模板
- 16. 在pkcs11密钥库中存储证书
- 17. 从密钥库中加载证书
- 18. 在Java中访问密钥库证书
- 19. 动态SSL密钥库/证书选择
- 20. Keytool - 将证书导入密钥库
- 21. 进出证书Java密钥库
- 22. 了解安全和密钥
- 23. IdentityServer4签名证书:使用公共可用的证书+密钥?
- 24. 获得来自密钥库证书不是基于别名在java中
- 25. 使用基于来自Java密钥库的别名的单个证书
- 26. 如何将证书链及其证书导入java密钥库?
- 27. 向Java密钥库,JVM导入证书会忽略新证书
- 28. 如何将私钥和公钥(pvk,spc)和证书(cer)导入密钥库?
- 29. 有密钥库密码和别名密码不同的风险
- 30. apache cxf - 如何解决密钥库中的客户端证书
的开发站点建议使用所有的应用程序相同的证书。那么这是否意味着,只要我使用相同的密钥库,我可以使用任何带有任何密码的别名,并且不会搞乱更新,因为它只是一个参考?实际的密钥库是重要的部分? – Roger 2011-04-20 02:39:09
我重写了我的答案,以便更准确。简而言之,您必须确实使用相同的别名来签署应用程序的所有更新。 – 2011-04-20 02:52:11
@Julio那么最好的做法是使用相同的别名为你想发布的所有不同的应用程序,因为开发网站建议?我没有看到为所有应用程序创建单独别名的理由。 – 2011-08-31 00:08:20