2014-04-30 1 views
4

J'essaie d'utiliser KeyStore pour obtenir des informations à partir d'un keystore. J'ai généré le keystore en utilisant cette commande:Chargement du fichier keystore, aucun alias trouvé

keytool -genkey -alias server -keyalg RSA -keystore server.keystore -validity 365 pris this page.

Vérification ses informations keytool -list -v -keystore server.keystore je reçois le texte suivant:

Nom Alias: serveur
Date de création: 30 avril 2014
Type d'entrée: PrivateKeyEntry
longueur de chaîne de certificat: 1
certificat [1 ]:
(autres informations ici)

En utilisant cette commande: keytool -list -keystore server.keystore -alias server Je reçois ceci:

serveur

30 Avr 2014, PrivateKeyEntry, empreinte de certificat (SHA1): 28: 65: 5B: 0C: B3: 3C: C9: AA: F1: 7C: CE: 91: 23: 77: DD: 0D: F8: 54: 70: B9

maintenant, mon code java:

keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
keyStore.load(getClass().getResourceAsStream(KEYSTORE_FILE_PATH), "myPass".toCharArray()); 
keyStore.getCertificate("server").getPublicKey().getEncoded(); //here I get a null pointer exception - keystore.getCertificate("server") returns null. 

Faire keyStore.aliases() retourne un EmptyEnumeration.

L'application utilise maven, java ee 7 et j'ai copié le fichier keystore dans le dossier resources de mon application. KEYSTORE_FILE_PATH a la valeur "/server.keystore".

Merci.

Répondre

4

Class.getResourceAsStream() renvoie null lorsqu'il n'y a pas de ressource avec le nom spécifié. KeyStore.load() réinitialise le magasin de clés à l'état vide lorsqu'il transmet un flux d'entrée null.

Cela signifie qu'à l'exécution, votre code ne trouve pas la ressource de magasin de clés et procède silencieusement au stockage de clés vide.

  • ajouter une condition de garde qui vérifie que getResourceAsStream() retourné valeur non nulle avant de passer sa valeur en KeyStore.load().
  • Examinez votre code et le processus de construction/d'emballage dans maven pour vous assurer que le fichier keystore est présent au bon endroit.

Il y a somequestionsaboutgetResourceAsStream() qui peut être utile pour vous. GetResourceAsStream n'a pas renvoyé de valeur nulle.

+0

Le projet utilise cependant plusieurs modules maven et le keystore a été construit dans le pot respectif et d'après ce que j'ai sorti du débogage, le type vu à l'exécution était ZipEntry. Déplacer le fichier vers le module emballé comme guerre a fait l'affaire. Merci. – Radu

Questions connexes