java - chemin trustStore - définir la propriété ne fonctionne pas?
J'ai configuré un certificat auto-signé pour tester un ssl java connexion - cependant, c'est refuser de localiser le java trustStore. J'en ai gardé des copies dans /Java/re6/lib/security en plus de le dossier où les classes sont compilées (im à l'aide de netbeans) et /java/re6/bin
rien de ce qui précède semble fonctionner, parce que quand je lance la suite - trustStore = null.
public class ShowTrustStore {
public static void main(String[] args) {
System.setProperty("javax.net.ssl.keyStore", "keystore.jks");
System.setProperty("javax.net.ssl.trustStrore", "cacerts.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
String trustStore = System.getProperty("javax.net.ssl.trustStore");
if (trustStore == null) {
System.out.println("javax.net.ssl.trustStore is not defined");
} else {
System.out.println("javax.net.ssl.trustStore = " + trustStore);
}
}
}
comment définir correctement le chemin d'accès?
**********Mise à JOUR************
À l'aide de la méthode getFile() et un peu plus de données de débogage:
package ssltest;
public class Main {
public static void main(String[] args) {
// System.setProperty("javax.net.ssl.keyStore", "/keystore.jks");
// System.setProperty("javax.net.ssl.trustStrore", "/java.home/cacerts.jks");
// System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
// System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
try {
Main.class.getResource("trustStore.jks").getFile();
} catch (Exception e) {
e.printStackTrace();
}
String trustStore = System.getProperty("javax.net.ssl.trustStore");
if (trustStore == null) {
String storeLoc;
storeLoc = System.getProperty("java.class.path");
System.out.println("classpath: " + storeLoc);
}
trustStore = System.getProperty("javax.net.ssl.trustStore");
if (trustStore == null) {
System.out.println("javax.net.ssl.trustStore is not defined");
} else {
System.out.println("javax.net.ssl.trustStore = " + trustStore);
}
}
}
exécuter:
java.lang.NullPointerException
classpath: C:\Users\Main\Documents\NetBeansProjects\sslTest\build\classes;C:\Users\Main\Documents\NetBeansProjects\sslTest\src
au ssltest.Principal.principale(Main.java:15)
javax.net.le protocole ssl.trustStore n'est pas défini
Construction RÉUSSIE (temps total: 0 secondes)
- voir ma réponse mis à jour
- œuvres! merci beaucoup!
- Bon à savoir que je ne suis pas le seul dont la recherche d'un bug de l'heure pour heure ... à cause d'une petite faute de frappe ... 😉
Vous devez vous connecter pour publier un commentaire.
Vous avez une faute de frappe - c'est
trustStore
.En dehors de définir les variables avec
System.setProperty(..)
, vous pouvez également utiliserSemble que vous ayez une faute de frappe -- "trustStrore" doit être "trustStore", c'est à dire
devrait être:
-Djavax.net.ssl.trustStore=/home/path/to/truststore
avec Tomcat8Les deux
et
faire la même chose et n'ont pas de différence de travail de la sage. Dans votre cas, vous avez juste une faute de frappe. Vous avez mal orthographié
trustStore
dansjavax.net.ssl.trustStore.
Alternativement, si vous utilisez javax.net.le protocole ssl.trustStore pour spécifier l'emplacement de vos truststore ne fonctionne pas ( comme il l'a fait dans mon cas, pour les deux moyens d'authentification ), vous pouvez également utiliser SSLContextBuilder comme illustré dans l'exemple ci-dessous. Cet exemple inclut également comment créer un httpclient ainsi à montrer comment le SSL constructeur de travail.