Question

Je dois signer une application Android (.apk).
J'ai .pfx déposer.Je l'ai converti en .cer fichier via Internet Explorer puis converti .cer à .keystore en utilisant keytool.Ensuite, j'ai essayé de signer .apk avec jarsigner mais il dit que .keystore ne contient pas de clé privée.

Qu'est-ce que je fais de mal ?

Était-ce utile?

La solution

Utilisation JDK 1.6 ou version ultérieure

Il a été souligné par Justin dans les commentaires ci-dessous que keytool seul est capable de le faire en utilisant la commande suivante (bien que dans JDK 1.6 et versions ultérieures):

keytool -importkeystore -srckeystore mypfxfile.pfx -srcstoretype pkcs12 
-destkeystore clientcert.jks -deststoretype JKS

En utilisant JDK 1.5 ou au-dessous

OpenSSL peut tout faire. Cette réponse sur JGuru est la meilleure méthode que je l'ai trouvé à ce jour .

Tout d'abord faire en sorte que vous avez OpenSSL installé. De nombreux systèmes d'exploitation ont déjà installé comme je l'ai trouvé avec Mac OS X.

Les deux commandes suivantes convertir le fichier PFX à un format qui peut être ouvert en tant que magasin de clés Java PKCS12:

openssl pkcs12 -in mypfxfile.pfx -out mypemfile.pem
openssl pkcs12 -export -in mypemfile.pem -out mykeystore.p12 -name "MyCert"

Notez que le nom fourni dans la deuxième commande est l'alias de votre clé dans le nouveau magasin de clés.

Vous pouvez vérifier le contenu de la clé de stockage à l'aide de l'utilitaire Java avec la commande suivante:

keytool -v -list -keystore mykeystore.p12 -storetype pkcs12

Enfin, si vous devez vous pouvez convertir en un JKS magasin clé en important la clé de stockage créé ci-dessus dans un nouveau magasin clé:

keytool -importkeystore -srckeystore mykeystore.p12 -destkeystore clientcert.jks -srcstoretype pkcs12 -deststoretype JKS

Autres conseils

jarsigner peut utiliser votre fichier pfx comme magasin de clés pour signer votre pot.Assurez-vous que votre fichier pfx contient la clé privée et la chaîne de certificat lorsque vous l'exportez.Il n'est pas nécessaire de convertir vers d'autres formats.L'astuce consiste à obtenir le Alias de votre fichier pfx :

 keytool -list -storetype pkcs12 -keystore your_pfx_file -v | grep Alias

Une fois que vous avez votre pseudonyme, la signature est facile

jarsigner.exe -storetype pkcs12 -keystore pfx_file jar_file "your alias"

Les deux commandes ci-dessus vous demanderont le mot de passe que vous avez spécifié lors de l'exportation pfx.Si vous souhaitez que votre mot de passe soit affiché en texte clair, utilisez le -passe-magasin changer avant le -stockage de clés changer

Une fois signé, admirez votre travail :

jarsigner.exe -verify -verbose -certs  yourjarfile

J'ai trouvé cette page qui vous indique comment importer un PFX à JKS (Java Key Store):

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

Votre fichier PFX doit contenir la clé privée à l'intérieur. Exporter la clé privée et le certificat directement depuis votre fichier PFX (par exemple en utilisant OpenSSL) et les importer dans votre Java keystore.

Modifier

Pour plus d'informations:

  • Télécharger OpenSSL pour Windows .
  • Exporter la clé privée: openssl pkcs12 -in filename.pfx -nocerts -out key.pem
  • certificat d'exportation: openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
  • Importer la clé privée et le certificat en Java en utilisant keytool KeyStore.

Justin (ci-dessus) est exacte. Cependant, gardez à l'esprit que selon la personne qui vous obtenez le certificat (CA intermédiaire, CA racine impliquée ou non) ou comment le PFX est créé / exporté, parfois ils pourraient manquer la chaîne de certificats. Après l'importation, vous auriez un certificat de type PrivateKeyEntry, mais avec une chaîne de longueur de 1.

Pour corriger cela, il y a plusieurs options. L'option plus facile dans mon esprit est d'importer et d'exporter le fichier PFX dans IE (choisir l'option d'inclure tous les certificats de la chaîne). Le processus d'importation et d'exportation des certificats dans IE devrait être très facile et bien documenté ailleurs.

Une fois exporté, importer le fichier de clés que Justin a ci-dessus. Maintenant, vous auriez un certificat de keystore avec le type PrivateKeyEntry et avec une longueur de chaîne de certificats de plus de 1.

Certains clients de services Web .NET sur l'erreur (incapable d'établir une relation de confiance), si vous ne le faites pas ci-dessus.

Si vous travaillez avec JDK 1.5 ou au-dessous de l'utilitaire keytool ne sera pas l'option de -importkeystore (voir JDK 1.5 documentation keytool ) et la solution par MikeD sont disponibles uniquement en transférant le .pfx sur une machine avec un JDK plus récent (1,6 ou au-dessus).

Une autre option JDK 1.5 ou au-dessous (si vous avez produit Oracle WebLogic), est de suivre les instructions de ce document Oracle: Utilisation PFX et PEM formats avec certificat Keystores . Il décrit la conversion en format .pem, comment extraire les certificats d'informations de ce format textuel, et l'importer en format .jks avec l'utilitaire de java utils.ImportPrivateKey (ce qui est un utilitaire fourni avec le produit WebLogic).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top