问题标签 [jarsigner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android 密钥库停止工作
就在最近,我遇到了密钥存储问题。我知道已经有很多关于这个问题的问题了。我已经阅读了所有内容并疯狂地用谷歌搜索。
错误:
我正在使用的软件:
爪哇
蚀
最新的 ADT 插件
最新的安卓 SDK
这是我所知道的:
- 我没有丢失密码,它从未改变过。
- 我无法找回密码(我知道密码)。
- 如果不发布全新的应用程序,我无法使用不同的密钥签署现有应用程序(因此我无法发布任何更新)。
这是我所做的:
- 我已经多次卸载并重新安装了 Eclipse。
- 我已经卸载并重新安装了 android ADT 插件。
- 我已经多次删除并重新下载了最新的 Android SDK。
- 我已经卸载并重新安装了JDK7。
- 我尝试使用我的密钥库的备份。
- 我已经使用“md5sum KEYSTORE”检查了 MD5 校验和,并与备份进行了比较(相同的 MD5 输出 - 未被篡改)。
- 我试过暴力破解密钥库(我已经找回了我知道的密码)。
- 我创建了一个测试密钥(使用当前设置)并测试了密码,它似乎工作正常(所以有些东西发生了变化)。
- 我尝试手动导出 android .apk,然后尝试对其进行签名(在 Eclipse 之外)。
这是我导出签名应用程序的方式:
- 通过 Eclipse:使用 File > Export > Export Android Application 导出。
- JDK7 之前: jarsigner -verbose -keystore KEYSTORE FILE ALIAS。
- 使用 JDK7: jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore KEYSTORE FILE ALIAS。
还有什么需要弄清楚或尝试的?
一些引用/URL 说要删除“trusted.certs”文件?尝试删除“debug.keystore”?更新 Eclipse 或任何 Android 开发工具会影响我的密钥库吗?将 Java 从 jdk6 更新到 jdk7 会产生任何问题吗?这是否会扰乱或改变 jarsigner 的工作方式?
用户建议:
- 尝试使用 JDK6,但我最近能够导出应用程序。
在我的 local.properties 中检查了 key.store.password 或 key.alias.password在eclipse中自动取消选中构建并清理您的项目尝试删除工作区中的 .metadata 文件夹并清除所有临时文件夹。
概括
- 密钥库没有改变,
- 我有密钥库的密码,
- 我最近使用以下方法成功导出了一个应用程序:
- Eclipse 3.8(和 Eclipse 4.0+),
- 最新的 Java 7,
- 最新的 ADT 插件。
- 我最后一次成功导出和构建是在几周前使用 Eclipse 3.8、最新的 Android 工具和 Java 7 并使用相同的密码。
更新 (6/29/14)
- 我已经使用:keytool -list -keystore KEYSTORE成功证明并显示我的 4 个密钥中的 3 个有效。
- 我暴力破解了最后一个密钥并从密钥库中获取了密码(我已经知道的密码),但是当我输入签名时密码不起作用。我用过:java -jar AndroidKeystoreBrute_v1.02.jar -m 3 -k KEYSTORE -d WORDLIST。
- 奇怪的是,有时当我很快在eclipse中输入密码时,我的别名会出现,我可以成功导出我的应用程序。(我知道这很疯狂)。
- 更新了 Java 版本。
如果我很快输入密码,它有时会起作用。
似乎第一次打开 Eclipse 并输入密码让我可以使用密钥库。
显然,如果一切都失败了,我将不得不创建一个新的密钥库。我真的很想解决这个问题,除了用新密钥重新发布之外,我不确定现在该怎么做。
如果密钥无法正常恢复,我可能会在 Github 上开源。
解决方案(2014 年 6 月 29 日):
特别感谢用户 Erhannis!
这是我所做的:
该命令每次都会对我出错:
既然你告诉我我们可以从 Java Keystore(.jks) 中提取私钥,我深入挖掘并最终使用了该命令的变体。我按照您在此处和此处发布的链接进行操作:
在提取私钥并存储为 PKCS12 后,我认为提取了我的私钥并将其放回了一个全新的 Java Keystore:
参考:
http://developer.android.com/tools/publishing/app-signing.html#signapp
http://code.google.com/p/android-keystore-password-recover/
我已阅读的 StackOverflow URL 列表:
如何在 Android 中处理丢失的 KeyStore 密码?
Android:我丢失了我的 android 密钥库,我该怎么办?
忘记 Keystore 密码,考虑暴力检测。它会破坏密钥库吗?
java - 从签名的 APK 或 JAR 中提取原始 X.509 证书
我有一个用于签署各种 jar 的公钥的 MD5 哈希库,以及到它们各自的密钥库的映射,我们使用这些密钥库来签署不同的 APK。我想做的是确定哪个密钥库用于签署 APK,但不使用反复试验。(此外,遗憾的是,我们的许多密钥共享相似或相同的 DN。)
我的解决方案,因为我知道 META-INF/FOO.RSA(或 FOO.DSA)包含证书,是从 APK 的 RSA 文件中提取证书并直接计算 MD5 哈希。(我知道证书在那里,因为它可以被正在运行的 android 应用程序访问,并且 jarsigner 文档告诉我它在那里。)
但我找不到任何工具可以为我提供证书的实际字节。当我使用 时,我可以获得 DN 和证书元数据jarsigner -verbose -verify -certs my.apk
,但这并没有给我字节。
android - 如何在 Android 手机上签署“.apk”文件?
我想在手机上生成一个新的“.apk”文件(我的应用程序市场中的一个功能,如应用程序),我必须在安装之前对其进行签名。我想我必须在手机上运行 JarSigner。
JarSigner 位于以下两个项目中:OpenJDK 和 GCC-libjava。
我尝试包含从 Internet 下载的 OpenJDK.jar,但其中没有 JarSigner 类。
我也尝试将 JarSigner.java 从 OpenJDK 源添加到我的 Android APP 项目,但是依赖关系太多了。与来自 GCC-LibJAVA 的 JarSigner.java 相同。
为 Android 实现一个新的 JarSigner 太难了。
android - 安装时出现“包文件未正确签名”错误
我创建了一个 Android 应用程序并将其发布在 Google Play 商店中。随后下载时,我收到“包文件未正确签名”错误。我调查并找到了条目:
已发布的 Android apk 出现错误“包文件未正确签名”
我尝试了 JDK 6 解决方案(在 JDK 6 下编译和签名),但没有任何乐趣。我尝试在 2.3.3 和 4.x 设备上下载/安装,但都不起作用。就我而言,该应用程序是新的,因此密钥库也是(不是更新)新的。我会说新的密钥库最初是在 JDK 1.7 下创建的。
我很困惑如何解决这个问题,有人有想法吗?
java - How to configure TSA argument only on release in maven-jarsigner-plugin
Adding a timestamp to our jar's causes our maven build to take ~4 times longer than usual. Timestamp is necessary for release builds, but we don't need it for snapshot builds. How would we configure the POM file to only add the TSA arguments when it is a Release version (i.e. SNAPSHOT does not appear in the project version).
Below is our POM entry for the jarsigner plugin. Note the arguments added at the bottom. We would like these to not be added if SNAPSHOT appears in the project version:
android - 使用 keytool 和 jarsigner 签署我的应用程序
我正在使用我的 commonsware 书和描述如何签署我的应用程序的 android 文档。但是有一点我不明白...
我已经毫无问题地生成了我的 KeyStore 文件。
现在,通用软件书说“构建一个发布版本,它应该在项目的 bin/目录中为您提供一个 unsigned.apk 文件”,但它没有说明如何做到这一点。我看不到如何在 Eclipse 中执行此操作。似乎没有 Build -> Release 菜单项。尝试谷歌搜索,找不到任何东西。
Android 文档说“2. 在发布模式下编译应用程序”,然后告诉您“导出未签名的应用程序包”,然后将其存储在某个地方。我这样做了,现在我有两个 apk 文件。一个在我的 bin 目录中,一个在我导出的目录中。现在它说要使用 jarsigner 和 zipaligner,我只能假设(它没有说)我正在对已存储的导出 apk 执行此操作(而不是我的 bin 目录中的那个)。然后我只是将这个存储的apk复制回我的bin目录中的那个吗?下次编译的时候不会被抹掉吗?
与编写应用程序相比,这要困难得多,也少了很多乐趣。
有人可以让我直截了当吗?谢谢,加里
android - Windows 上的 Android 签名应用程序
我正在尝试注册 APK 以将其上传到 Play 商店市场。我正在按照此处强调的步骤进行操作
我收到以下错误
当我尝试使用 Eclipse 对应用程序进行签名时project->Android Tools->Export Signed Application Package
。
android - 在错误的目录中找到 Jarsigner - HoloEverywhere + Maven
我目前正在尝试使用此页面上的指南构建我的 holoeverywhere 项目。 https://github.com/ChristopheVersieux/HoloEverywhere/wiki/Maven
但是,当我尝试构建我的项目时,它最终会导致关于 jarsigner 的构建失败。
这是错误:
我去了它试图找到 jarsigner.exe 的目录,但它不存在!所以我在 C:\Program Files\Java\jdk1.7.0_11\bin\ 中找到了它,并意识到它的 jarsigner.exe 位置错误。
我尝试使用谷歌搜索标签以包含在 pom.xml 中以指定 jarsigner 的位置。我什至为 jdk 安装、jarsigner(在 JARSIGNERLOCATION 中)等等正确设置了路径变量……
我的问题是,我在哪里设置 jarsigner.exe 的位置以便构建器找到该文件?
这是我的 pom.xml 供参考。
谢谢!!!!!
android - 尝试签署 .apk 文件时出错
我在签署未签名的 .apk 文件时遇到问题。
每当我尝试输入此命令时jarsigner –verbose –sigalg MD5withRSA –digestalg SHA1 –keystore my-release-key.keystore AmazonInAppSample-release-unsigned.apk alias_name
我收到此错误:
我执行了这个命令,我的当前目录是我的密钥库和 .apk 文件所在的 bin 文件夹。
我还确保输入了正确的密码。
如果我尝试输入空白通行证,我会收到以下消息:
如果我尝试输入正确或无效的密码,我会收到以下消息:
更新:我需要安装 Java JDK 7 才能使用 –sigalg MD5withRSA –digestalg SHA1 吗?
java - 签署一个 Jar 文件
我在 jar 中手动添加了一些类文件。并在服务器中替换。但是服务器没有拿出这个新的jar说:java.lang.SecurityException:类“test.TestProcess2”的签名者信息与同一包中其他类的签名者信息不匹配。
我是否需要在更新后对 jar 进行签名以及如何做。
提前致谢