Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序使用两个独立的信任库_Java_Ssl - Fatal编程技术网

Java应用程序使用两个独立的信任库

Java应用程序使用两个独立的信任库,java,ssl,Java,Ssl,在java应用程序中,我想使用两个信任库,一个连接到jms代理,另一个连接到web服务。我知道我可以将证书导入到一个信任库中,这是可行的。但是,我一直在犹豫是否可以使用系统属性javax.net.ssl.trustStore传递不同信任库的列表?不,您不能。要使用不同的信任库,您应该以编程方式设置其中一个或两个信任库 请参见以下示例: SSLContext ssl = SSLContext.getInstance("SSLv3"); KeyManagerFactory kmf = KeyMa

在java应用程序中,我想使用两个信任库,一个连接到jms代理,另一个连接到web服务。我知道我可以将证书导入到一个信任库中,这是可行的。但是,我一直在犹豫是否可以使用系统属性javax.net.ssl.trustStore传递不同信任库的列表?

不,您不能。要使用不同的信任库,您应该以编程方式设置其中一个或两个信任库

请参见以下示例:

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);