web-dev-qa-db-fra.com

Chaîne de certificats introuvable, comment réparer et publier sur Google Play Store?

MESSAGE D'ERREUR :

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.

[~ # ~] question [~ # ~] : Comment puis-je inclure une chaîne de certificats de clé publique pour corriger l'erreur?

[~ # ~] arrière-plan [~ # ~] : le développeur de l'application a terminé une application Android et livré un APK non signé appelé Foo.apk. Mon objectif est de signer et de zipper l'alignement de l'APK en vue de le télécharger sur le Google Play Store. Mon magasin de clés se trouve dans C:\Path\.keystore sur une machine Windows.

COMMAND LINE , ma commande:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Path\\.keystore Foo.apk project_foo

LIGNE DE COMMANDE , réponse:

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.

AUSSI ESSAYÉ : Vérifié que je me souviens du mot de passe correct. L'utilisation de 'keytool -list' à partir de la ligne de commande me montre la liste attendue (elle comprend une clé privée).

QUESTION ANTÉRIEURE DU SYSTÈME D'EXPLOITATION : chaîne de certificats introuvable demandé à l'aide d'un .cer fichier de Verisign. Je n'ai pas de fichier similaire disponible.

AUTRES INFORMATIONS : Machine Windows 7, utilisant l'invite de commande Windows standard.

41
campbellwarren

keytool -keystore formconnect.keystore -list -v

Vous pouvez utiliser cette commande pour connaître votre nom d'alias après avoir généré votre clé.

La première ligne d'exécution contient le nom d'alias: <value> Si keytool est utilisé, le nom d'alias peut être "mykey".

Utilisez ce nom d'alias lors de l'empaquetage de l'application.

91
Umitk

j'avais le même problème mes commandes étaient

pour générer la clé

 keytool -genkey -v -keystore testapp-key.keystore -alias testapp-key -keyalg RSA -keysize 2048 -validity 10000

et puis je l'ai fait pour signer l'application

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testapp-key.keystore testapp.apk testapp

j'ai cette erreur

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.

puis j'ai remplacé l'alias 'testapp' dans la commande jarsignir par l'alias de clé qui est 'testapp-key' c'est dans la première commande, c'est-à-dire la commande de génération de clés

la commande ressemblera à ceci

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testapp-key.keystore testapp.apk testapp

dans votre cas ce sera comme ça

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Path\\.keystore Foo.apk your-key-alias
9

Le développeur de notre équipe a proposé la solution qui a résolu le problème. Auparavant, j'avais copié le Foo.apk dans le répertoire avec le jarsigner.exe et essayé de l'exécuter là-bas. Il a proposé:

  1. Définissez la variable d'environnement PATH pour que Windows puisse trouver l'exécutable jarsigner.
  2. Déplacez le Foo.apk vers le chemin où se trouvait le magasin de clés.
  3. Exécutez la commande ci-dessous (sans utiliser de chemin pour trouver le fichier de clés).
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore .keystore Foo.apk project_foo

Ça marche! La suppression de la nécessité de spécifier le chemin du fichier pour le magasin de clés a résolu le problème.

3
campbellwarren

ajouter le chemin du dossier release unsigned.apk

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystorename.keystore .....\ plates-formes\Android\build\sorties\apk\Android-release-unsigned.apk aliasname

c'est du travail pour moi !!

1
Dhanashri Dhoke