我需要签署Android应用程序(.apk).
我有.pfx档案.我.cer通过Internet Explorer 将其转换为文件,然后转换.cer为.keystore使用keytool.然后我尝试.apk与jarsigner 签约,但它说.keystore不满足私钥.
我做错了什么?
就在最近,我遇到了一个关键商店的问题.我知道有很多关于这个问题的问题.我已经阅读了所有内容并且用Google搜索了一下.
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1214)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:885)
at sun.security.tools.KeyTool.run(KeyTool.java:340)
at sun.security.tools.KeyTool.main(KeyTool.java:333)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770)
... 5 more
Run Code Online (Sandbox Code Playgroud)
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
Version: 3.8.0
Build id: I20120502-2000
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个JAR文件的代码并使用JDK 1.7u1.我们获得了GoDaddy Code Signing证书,我按照说明(方法1)在这里:http://help.godaddy.com/article/4780
JAR签名很好,但每当我尝试运行命令时:
jarsigner -verify在我使用JDK 1.7u1签名的JAR上,我得到以下输出:
s 180 Mon Dec 05 10:24:32 EST 2011 META-INF/MANIFEST.MF
[entry was signed on 12/5/11 10:24 AM]
X.509, CN=Removed Company Name, O=Removed Company Name, L=Removed City, ST=Removed State, C=US
[certificate is valid from 12/2/11 4:30 PM to 12/2/13 4:30 PM]
X.509, SERIALNUMBER=00000000, CN=Go Daddy Secure Certification Authority, OU=http://certificates.godaddy.com/repository, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
[certificate is valid from 11/15/06 8:54 PM to 11/15/26 8:54 PM]
X.509, OU=Go Daddy Class 2 …Run Code Online (Sandbox Code Playgroud) 错误消息:
jarsigner: Certificate chain not found for: project_foo.<br/>
project_foo must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
Run Code Online (Sandbox Code Playgroud)
问题:如何包含公钥证书链来解决错误?
背景:App Developer已经完成了一个Android应用程序,并提供了一个名为Foo.apk的未签名APK.我的目标是对APK进行签名和压缩,以准备将其上传到Google Play商店.我的密钥库位于Windows机器上的C:\ Path\.keystore中.
命令行,我的命令:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Path\\.keystore Foo.apk project_foo
Run Code Online (Sandbox Code Playgroud)
命令行,回复:
Enter Passphrase for keystore:
jarsigner: Certificate chain not found for: project_foo.<br/>
project_foo must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
Run Code Online (Sandbox Code Playgroud)
还试过:验证我记得正确的密码.使用命令行中的"keytool -list"向我显示预期的列表(它包含一个私钥). …
我最近将我的应用程序上传到了Android市场,但是由于错误而下载时它拒绝运行
包文件未正确签名
我首先使用eclipse发布数据包,右键单击导出,创建一个密钥库然后发布,但它拒绝工作.
然后我下载了keytool和jarsigner并用它来签署我发布的升级版.但是这会产生同样的错误.
我不知道我做错了什么,因为我无法删除应用程序,我无法尝试重新开始,任何人都可以帮助我吗?
谢谢
我正在自动化一些涉及android keytool和jarsigner的东西.该工具获取密钥库,密钥库的密码,别名和别名/密钥的密码,我正在尝试找到一种方法来显式检查别名/密钥的提供密码是否正确.
有任何想法吗?另外,我需要在没有jar文件的情况下检查它 - 在我的上下文中获取该文件很长,所以我想早点而不是晚点中止.
我的目的是使用jarsigner来签署apk。
\n我得到以下提示\xef\xbc\x9a
\n% jarsigner \nThe operation couldn\xe2\x80\x99t be completed. Unable to locate a Java Runtime that supports jarsigner.\nPlease visit http://www.java.com for information on installing Java.\nRun Code Online (Sandbox Code Playgroud)\n我的java版本提示\xef\xbc\x9a
\n% java -version\njava version "1.8.0_321"\nJava(TM) SE Runtime Environment (build 1.8.0_321-b07)\nJava HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)\nRun Code Online (Sandbox Code Playgroud)\nMac版本是11.6.3
\n请问我该如何解决这个问题?
\n我想使用jarsigner签署一个jar,然后使用一个Java应用程序验证它,该应用程序没有签名的jar作为其类路径的一部分(即只使用jar的文件系统位置)
现在我的问题是从jar中获取签名文件,是否有一种简单的方法可以做到这一点?
我玩过Inflater和Jar InputStreams没有运气.
或者这是可以更好地完成的事情吗?
谢谢
免责声明:我知道签署APK的基本知识,我只对我的一个项目有问题,并且只有在使用Microsoft Windows作为操作系统进行签名时才会出现问题.
我正在使用Maven构建我的APK 并使用maven-jarsigner-plugin进行签名:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<executions>
<execution>
<id>signing</id>
<goals>
<goal>sign</goal>
</goals>
<phase>package</phase>
<inherited>true</inherited>
<configuration>
<archive>target/${project.build.finalName}.apk</archive>
<sigfile>CERT</sigfile>
<keystore>${env.HOME}/.keystore</keystore>
<storepass>${env.KEY_STOREPASS}</storepass>
<keypass>${env.KEY_KEYPASS}</keypass>
<alias>${env.KEY_ALIAS}</alias>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在有了我的一个项目,在尝试安装和启动应用程序时出现以下错误:
1360 KB/s (2057872 bytes in 1.477s)
pkg: /data/local/tmp/FX-602P-Droid-5.0.0.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Run Code Online (Sandbox Code Playgroud)
正如我在第一句中所说:在使用Mac OS X进行签名时,它工作正常.只有在使用Windows 7进行签名时才会失败.
--debug在调用Maven时使用我看到jarsigner被称为ok并且没有报告错误:
[INFO]
[INFO] --- maven-jarsigner-plugin:1.2:sign (signing) @ FX-602P-Droid ---
[DEBUG] org.apache.maven.plugins:maven-jarsigner-plugin:jar:1.2:
[DEBUG] org.apache.maven:maven-plugin-api:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-project:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-settings:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-profile:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-model:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
[DEBUG] org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
[DEBUG] org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:compile
[DEBUG] junit:junit:jar:3.8.1:compile
[DEBUG] classworlds:classworlds:jar:1.1-alpha-2:compile
[DEBUG] org.apache.maven:maven-artifact:jar:2.0.6:compile …Run Code Online (Sandbox Code Playgroud) 在播放商店中没有更新我的应用程序一段时间后,我尝试使用我的密钥库签署我的一个APK,但却发现密钥库和别名密码不再起作用.我可以使用这个要点重置密钥库密码:gist.github.com/zach-klippenstein/4631307现在工作正常.这适用于两个不同应用程序的两个不同的密钥库.
跑步keytool -list -keystore mykeystore导致:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
myalias, Dec 23, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 85:8F:69......
Run Code Online (Sandbox Code Playgroud)
我100%确定别名密码与密钥库密码相同,但它似乎不起作用.我已尝试在Android Studio中签署APK,jarsigner -keystore mykeystore -storepass mykeystorepassword app-debug.apk myalias但响应总是:jarsigner: unable to recover key from keystore.
我尝试将别名移动到新的密钥库文件,keytool -importkeystore -srckeystore mykeystore -destkeystore newkeystore -srcalias myalias然后要求我输入新密钥库的新密码和旧密钥库的密码(两者都有效),只有在输入别名密码后才会出现异常:
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Enter key password for <myalias>
keytool error: java.security.UnrecoverableKeyException: Cannot recover key
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索后,我发现对于某些人来说,密钥库在更新到另一个JDK版本或Android …
jarsigner ×10
android ×6
java ×6
keytool ×5
apk ×2
certificate ×1
code-signing ×1
google-play ×1
jar-signing ×1
java-7 ×1
keystore ×1
maven ×1
signature ×1