Настройка хранилища ключей SSL во время выполнения в Apache Felix - PullRequest
1 голос
/ 06 октября 2019

У меня есть служба, которая загружает хранилище ключей, но как мне сказать Apache Felix загрузить его во время выполнения? Jetty 9.4.20 имеет поддержку для перезагрузки sslContext с SslContextFactory.reload(), но как мне получить ServerConnector от Феликса?

Я также попробовал подход, в котором я изменяю свойства комплекта с помощью ManagedServiceFactory, однако не удается запуститьсервер. См. Пример

public void updateSslContext(ManagedServiceFactory mf) throws exception {
  Dictionary<String, Object> newProps =new Hashtable<>();
  newProps.put("org.apache.felix.https.keystore", "keystore.jks");
  newProps.put("org.apache.felix.https.keystore.password", "password");
  newProps.put("org.apache.felix.https.keystore.key.password", "1234");
  newProps.put("org.apache.felix.https.enable", true);
  mf.updated("org.apache.felix.http", newProps);
}

Сбой со следующей ошибкой

[INFO] Started Jetty 9.4.20.v20190813 at port(s) HTTP:8080 HTTPS:8443 on context path / [minThreads=8,maxThreads=200,acceptors=1,selectors=2]
[INFO] Apachde Felix Http Whiteboard Service started
...
...
...
ERROR    20191006 21:23:35 bid#4        - Failed to start Connector: ServerConnector@49d09625{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} (java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080)
info     20191006 21:23:35 bid#4        - org.eclipse.jetty.server.Server :: jetty-9.4.20.v20190813; built: 2019-08-13T21:28:18.144Z; git: 84700530e645e812b336747464d6fbbf370c9a20; jvm 1.8.0_151-b12
info     20191006 21:23:35 bid#4        - org.eclipse.jetty.server.handler.ContextHandler :: Started o.e.j.s.ServletContextHandler@3ea91c64{/,null,AVAILABLE}
ERROR    20191006 21:23:35 bid#4        - Failed to start Connector: ServerConnector@27be6cdc{SSL,[ssl, http/1.1]}{0.0.0.0:8443} (java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8443)
info     20191006 21:23:35 bid#4        - Stopped Jetty.
ERROR    20191006 21:23:35 bid#4        - Jetty stopped (no connectors available)
ERROR    20191006 21:23:35 bid#4        - Exception while initializing Jetty. (java.lang.NullPointerException)

Я бы предпочел использовать SslContextFactory.reload(), чтобы сервер не перезагружался полностью.

...