错误消息:
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.
问题: 如何包含公钥证书链以解决错误?
背景: 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
命令行,回复:
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.
还试过: 验证我记得正确的密码。使用&#39; keytool -list&#39;从命令行显示预期列表(它包括一个私钥)。
以前的操作系统问题:certificate chain not found询问使用Verisign的.cer
文件。我没有类似的文件。
其他信息:Windows 7计算机,使用标准Windows命令提示符。
答案 0 :(得分:83)
keytool -keystore formconnect.keystore -list -v
生成密钥后,您可以使用此命令查找别名。
第一行执行包含别名:<value>
如果使用keytool,则别名可能是“mykey”。
打包应用程序时使用该别名。
答案 1 :(得分:8)
生成密钥
keytool -genkey -v -keystore testapp-key.keystore -alias testapp-key -keyalg RSA -keysize 2048 -validity 10000
然后我这样做是为了对应用进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testapp-key.keystore testapp.apk testapp
我收到了这个错误
jarsigner: Certificate chain not found for: testapp.<br/>
project_foo must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
然后我用jarsignir命令中的别名'testapp'替换了'testapp-key'的键别名它是第一个命令,即密钥生成命令< / p>
命令看起来像这样
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testapp-key.keystore testapp.apk testapp
在你的情况下,它会像这样
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Path\\.keystore Foo.apk your-key-alias
答案 2 :(得分:3)
我们团队的开发人员提出了解决问题的解决方案。以前我使用jarsigner.exe将Foo.apk复制到目录中并尝试在那里运行它。他提议:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore .keystore Foo.apk project_foo
有效!删除指定密钥库的文件路径的必要性修复了问题。
答案 3 :(得分:1)
添加release unsigned.apk文件夹路径
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystorename.keystore ..... \ platforms \ android \ build \ outputs \ apk \ android-release-unsigned.apk aliasname
它为我工作!!答案 4 :(得分:0)
如果您尝试从Android Studio中对.aab或.apk进行签名,但是即使您所做的一切正确,但仍会收到此错误,那么以下解决方案对我有用: 转到搜索并找到命令提示符。以管理员身份运行。现在键入此行。
"C:--->Your Path To jarsiner<---\jdk1.8.0_192\bin\jarsigner" -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "C: **--->Your Path To the Keystore<---**\Desktop\OfficalBuilds\MyKey.keystore" "C:**--->Your Path To the .apk Or .aab<---**\Desktop\MyFinalBuild.aab" "My Alias "
如果您尝试了上述解决方案,您会发现现在在“”中键入了别名。有时在“我的别名”末尾还有一个空格。
答案 5 :(得分:0)
您必须使用别名来命名已签名的应用
例如:
如果您使用此名称“ myFirstSignedApp”作为别名,则必须在jarsigner命令中确定该名称
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testapp.keystore app-release-unsigned.apk myFirstSignedApp