2017-06-02 14 views
2

Javaアプリケーションからは、2つのトラストストアを使用したいと思います.1つはjmsブローカに接続し、もう1つはWebサービスに接続します。私は証明書を1つのトラストストアにインポートできることを知っています。しかし、私は、システムプロパティjavax.net.ssl.trustStoreを使用して別のトラストストアのリストを渡すことができるかどうかを迷っていましたか?2つの独立したトラストストアを使用するJavaアプリケーション

答えて

0

いいえ、できません。異なるトラストストアを使用するには、それらのいずれかまたは両方をプログラムで設定する必要があります。

このpostから以下の例を参照してください:

SSLContext ssl = SSLContext.getInstance("SSLv3"); 
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
    KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType()); 
    String password = Configuration.getConfig("keyStorePassword"); 
    store.load(new FileInputStream(new File(Configuration.getConfig("keyStore"))), password.toCharArray()); 
    kmf.init(store, password.toCharArray()); 
    KeyManager[] keyManagers = new KeyManager[1]; 
    keyManagers = kmf.getKeyManagers(); 
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 
    tmf.init(store); 
    TrustManager[] trustManagers = tmf.getTrustManagers(); 
    ssl.init(keyManagers, trustManagers, new SecureRandom()); 

    HttpsConfigurator configurator = new HttpsConfigurator(ssl); 
    Integer port = Integer.parseInt(Configuration.getConfig("port")); 
    HttpsServer httpsServer = HttpsServer.create(new InetSocketAddress(Configuration.getConfig("host"), port), 0); 
    httpsServer.setHttpsConfigurator(configurator); 

    Implementor implementor = new Implementor(); // class with @WebService etc. 
    HttpContext context = (HttpContext) httpsServer.createContext("/EventWebService"); 
    Endpoint endpoint = Endpoint.create(implementor); 
    endpoint.publish(context); 
関連する問題