Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android开发:Keytool,创建密钥库?_Android_Eclipse_Certificate_Keystore_Keytool - Fatal编程技术网

Android开发:Keytool,创建密钥库?

Android开发:Keytool,创建密钥库?,android,eclipse,certificate,keystore,keytool,Android,Eclipse,Certificate,Keystore,Keytool,我正试图为谷歌市场准备我的应用程序,但事实证明,这比预期的更具挑战性。我似乎不能完全理解应用程序签名的概念,但更具体地说,我的问题是,我已经安装了eclipse的keytool插件,但是当我想要创建一个证书时,它会要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该作为文件输入什么,因为它实际上希望我通过浏览来选择文件,以及如何继续导出文件,所以很遗憾,谷歌没有给出非常好或明确的答案您需要提供新密钥库文件的位置和文件名,以防创建新的密钥库文件。或者,您可以选择“使用现有密钥库”并浏览到

我正试图为谷歌市场准备我的应用程序,但事实证明,这比预期的更具挑战性。我似乎不能完全理解应用程序签名的概念,但更具体地说,我的问题是,我已经安装了eclipse的keytool插件,但是当我想要创建一个证书时,它会要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该作为文件输入什么,因为它实际上希望我通过浏览来选择文件,以及如何继续导出文件,所以很遗憾,谷歌没有给出非常好或明确的答案

您需要提供新密钥库文件的位置和文件名,以防创建新的密钥库文件。或者,您可以选择“使用现有密钥库”并浏览到现有密钥库文件位置。

编辑:我想我会提供详细的答案。希望这些信息会有用

什么是签名以及为什么需要签名。 android使用的apk签名机制是一个应用于字节码和应用程序资源的示例,以确保:

  • 完整性(下载后不会篡改您的应用程序)
  • 真实性-你是向Google Play发布应用程序的人
为了更好地理解,我建议你也略读一遍

这是怎么回事。 Android使用与标准java应用程序签名/验证相同的标准JDK工具:

  • -使用提供的
    私钥
    对数据进行签名,并使用(即绑定到您的身份的公钥)验证数据
  • -管理
    密钥库中的私钥和证书。
    jarsigner
    需要这些键
在您使用
jarsigner
手动签署应用程序或使用IDE导出已签署的应用程序(在引擎盖下使用
keytool
jarsigner
)后,您可以找到放置在已签名.apk存档的
META-INF
目录中的签名相关文件:

  • CERT.SF-包含应用程序组件和
  • CERT.RSA(或.DSA)-上述文件的数字签名+验证此签名的公共证书。 你可以阅读更多关于唱歌的细节
如何正确签署发布申请。 非常好地描述了您需要遵循的步骤

<强>注释:在进行签名之前,请考虑重要的预发布步骤:日志/关键字符串文本删除、混淆等。

下面我将提供该过程的一些要点:

生成您的私钥并将其放入java
keystore
。 如果没有密钥库,则可能需要先创建密钥库。创建
密钥库
时,您需要创建
密钥库密码
,该密码用于确保
密钥库
数据的完整性(即,在有人(而不是您)向密钥库添加新证书后,您将被警告您的密钥库被篡改)。实际上,如果您保证
密钥库
文件的安全,那么这个密码并不是非常重要的。如果有一天你忘了它,你可以逃之夭夭。

生成
私钥
时,还将要求您创建
私钥密码
,该密码将用于加密密钥库中的私钥这是您需要保留的非常重要的密码,因为它可以确保

  • 你的私钥真的是私钥。最重要的是
  • 如果没有此密码,您将无法使用您的私钥来签署和发布应用程序的未来更新
在Eclipse中生成新私钥时,还将要求您提供用于创建自签名证书的身份信息

作为下一步,将使用指定的
密钥库
文件中的
私钥
对应用程序进行签名,并且您的
.apk
将使用上述签名相关文件进行更新

一些重要术语: Keystore只是一个二进制文件,以特定格式保存私钥/证书列表。它可以使用提供的API以编程方式访问。您的密钥库可以包含多个私钥条目,每个条目由其
别名
标识
在大多数情况下,您的
密钥库
将有一个私钥,其中有一个与此私钥匹配的自签名证书

密钥库密码用于密钥库内容的完整性检查。
如果您丢失了此密码,但其中仍存储有私钥的密码,则可以通过运行以下cmd“克隆”密钥库并提供新的密钥库密码:

keytool-importkeystore-srckeystore 路径/to/keystore/with/遗忘/pw-destkeystore 路径/到/my/new/keystore

提供新密码,并将旧密钥库密码留空-您只会收到警告。然后,您可以使用新的密钥库并删除旧的密钥库。
还有其他方法可以在不使用密钥库密码的情况下检索私钥

私钥密码-保护(通过加密)
私钥
内部
密钥库
。它非常重要,因为它允许您访问私钥,以便为应用程序的更新签名。通常很难恢复


自签名证书-将您的身份(姓名/组织/电子邮件)绑定到公钥的非常简单的证书。此证书在签名操作期间添加到
.apk
文件中,并将在安装前在用户设备上用于验证
.apk

它告诉我创建密钥库时出错,并关闭keytool窗口..:\嗯,错误日志非常长,您需要哪些部分