web-dev-qa-db-fra.com

Comment importer un fichier Java keystore (.jks) existant dans une installation Java)?

Donc, j'ai des problèmes avec LDAP. J'ai un cas de test d'intégration qui, je l'espère, fonctionnera, mais il rencontre actuellement des problèmes de sécurité LDAPS avec la négociation SSL.

Je peux me connecter au LDAPS avec Apache Directory Studio, et il a téléchargé le fichier de clés dans un fichier "permanent.jks".

C'est correct, mais je veux que mon test d'intégration, qui réside dans Eclipse à l'aide d'un JRE, puisse se connecter au serveur LDAP à l'aide de ce magasin de clés.

Comment puis-je prendre ce fichier de clés et l'importer dans le JRE pour son propre usage?

34
MetroidFan2002

Ok, voici donc mon processus:

keytool -list -v -keystore permanent.jks - m'a donné l'alias.

keytool -export -alias alias_name -file certificate_name -keystore permanent.jks - m'a obtenu le certificat à importer.

Ensuite, je pourrais l'importer avec l'outil clé:

keytool -import -alias alias_name -file certificate_name -keystore keystore location

Comme le dit @Christian Bongiorno, l'alias ne peut pas déjà exister dans votre magasin de clés.

42
MetroidFan2002

Vous pouvez importer en bloc tous les alias d'un fichier de clés à un autre:

keytool -importkeystore -srckeystore source.jks -destkeystore dest.jks
27
qwertzguy

pour charger un magasin de clés, vous devrez lui indiquer le type de magasin de clés qu'il s'agit (probablement jceks), fournir un flux d'entrée et un mot de passe. ensuite, vous pouvez le charger comme ceci:

KeyStore ks  = KeyStore.getInstance(TYPE_OF_KEYSTORE);
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD);

cela peut lever une KeyStoreException, vous pouvez donc entourer dans un bloc try si vous le souhaitez, ou relancer. Gardez à l'esprit qu'un magasin de clés peut contenir plusieurs clés, vous devrez donc rechercher votre clé avec un alias, voici un exemple avec une clé symétrique:

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD));
SecretKey someKey = entry.getSecretKey();
26
Paul Sanwald