java - chemin trustStore - définir la propriété ne fonctionne pas?

J'ai configuré un certificat auto-signé pour tester une connexion SSL java-cependant, il refuse de localiser le trustStore java. J'en ai enregistré des copies dans / Java / jre6 / lib / security en plus du dossier dans lequel les classes sont compilées (im utilisant netbeans) et aussi dans / java / jre6 / bin aucun de ce qui précède ne semble fonctionner, car lorsque je lance le suivant-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 le chemin correctement?

**********mise à JOUR************ À l'aide de la méthode getFile() et quelques autres 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:UsersMainDocumentsNetBeansProjectssslTestbuildclasses;C:UsersMainDocumentsNetBeansProjectssslTestsrc au ssltest.Principal.principale(Main.java: 15) javax. net. ssl. trustStore n'est pas défini Construire réussi (temps total: 0 secondes)

37
demandé sur Duncan X Simpson 2010-01-26 12:48:14

3 réponses

Vous avez une faute de frappe - c'est - trustStore.

En dehors de définir les variables avec System.setProperty(..), vous pouvez également utiliser

-Djavax.net.ssl.keyStore=path/to/keystore.jks
55
répondu Bozho 2014-03-25 15:13:24

On dirait que vous avez une faute de frappe - "trustStrore" devrait être "trustStore", c'est-à-dire

System.setProperty("javax.net.ssl.trustStrore", "cacerts.jks");

Devrait être:

System.setProperty("javax.net.ssl.trustStore", "cacerts.jks");
38
répondu Don Isenor 2012-08-19 09:19:53

Les deux

-Djavax.net.ssl.trustStore=path/to/trustStore.jks

Et

System.setProperty("javax.net.ssl.trustStore", "cacerts.jks");

Faites la même chose et n'ayez aucune différence de travail Sage. Dans votre cas, vous avez juste une faute de frappe. Vous avez mal orthographié trustStore dans javax.net.ssl.trustStore.

7
répondu Aniket Thakur 2014-03-25 15:48:09