Как динамически обновить TrustStore?JAVA

Программисты JAVA общаются здесь
Anonymous
Как динамически обновить TrustStore?

Сообщение Anonymous »

Я в настоящее время реализовал взаимные TLS в своем приложении Spring Boot, и я делаю это программно, как и так: < /p>

Код: Выделить всё

@Bean
public ServletWebServerFactory servContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
TomcatConnectorCustomizer tomcatConnectorCustomizer = new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setPort(8443);
connector.setScheme("https");
connector.setSecure(true);
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();

protocol.setSSLEnabled(true);
protocol.setKeystoreType("PKCS12");
protocol.setKeystoreFile(keystorePath);
protocol.setKeystorePass(keystorePass);
//client must be authenticated (the cert he sends should be in our trust store)
protocol.setSSLVerifyClient(Boolean.toString(true));
protocol.setTruststoreFile(truststorePath);
protocol.setTruststorePass(truststorePass);
protocol.setKeyAlias("APP");
}
};
tomcat.addConnectorCustomizers(tomcatConnectorCustomizer);
return tomcat;
}
Это работает нормально, и, как и ожидалось, но у меня есть требование, когда мне нужно обновить трастовый хранилище во время выполнения (например, когда используется конечная точка @getmapping ).
Специально мое приложение. < /p>
Как я могу это сделать?

Код: Выделить всё

@GetMapping("/register")
public String Register() throws Exception {
ConfigurableApplicationContext configContext = (ConfigurableApplicationContext) appContext;
ConfigurableListableBeanFactory beanRegistry = configContext.getBeanFactory();
SSLContext sslContext = getSSLContext();
beanRegistry.registerSingleton("sslContext", sslContext);
return "okay";
}

public  SSLContext getSSLContext() throws Exception {
TrustManager[] trustManagers = new TrustManager[] {
new ReloadableX509TrustManager(truststoreNewPath)
};
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManagers, null);
SSLContext.setDefault(sslContext);
return sslContext;
}
Я также попытался вызвать вышеупомянутый getslcontext () как @bean, который также не работал. />[*]https://jcalcote.wordpress.com/2010/06/ ... ust-store/

Я нашел решение, которое точно описывает, как иметь динамический трастовый магазин, но я не могу выяснить, как использовать доверие во время работы. Скажите, например, при использовании конечной точки GET.
Аутентификация сертификата клиента без локального TrustStore
У меня есть список сертификатов, мне просто нужно знать, как вызвать метод перезагрузки.>

Подробнее здесь: https://stackoverflow.com/questions/571 ... ynamically

Вернуться в «JAVA»