Ранее я использовал Spring 3.1.3, в котором я использовал SslStoreProvider для установки свойств. Но теперь весной 3.2.3 он устарел, а начиная с весны 3.3.3 удален. В документации показано, что вы можете использовать sslbundle.
Я хочу использовать sslbundle для программной установки хранилища ключей и хранилища доверенных сертификатов. Не с помощью application.properties.
Вот моя старая реализация SslStoreProvider:
Код: Выделить всё
@Bean
public JettyServletWebServerFactory jettyConfigBean() {
JettyServletWebServerFactory jef = new JettyServletWebServerFactory();
System.out.println("JettyServletWebServerFactory");
System.out.println("Exec Prakrath code!");
jef.setSslStoreProvider(new SslStoreProvider() {
char[] password = "changeit".toCharArray();
@Override
public KeyStore getKeyStore() throws Exception {
System.out.println("downloadCerts and copyCerts initial load");
System.out.println("SslStoreProvider getKeyStore is called");
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return keyStore;
}
@Override
public KeyStore getTrustStore() throws Exception {
System.out.println("SslStoreProvider getTrustStore is called");
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return trustStore;
}
});
return jef;
}
Вот моя реализация SSLBundles
Код: Выделить всё
@Bean
public JettyServletWebServerFactory jettyConfigBean() {
JettyServletWebServerFactory jef = new JettyServletWebServerFactory();
System.out.println("JettyServletWebServerFactory");
System.out.println("Exec Prakrath code!");
jef.setSslStoreProvider(new SslStoreProvider() {
char[] password = "changeit".toCharArray();
@Override
public KeyStore getKeyStore() throws Exception {
System.out.println("downloadCerts and copyCerts initial load");
System.out.println("SslStoreProvider getKeyStore is called");
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return keyStore;
}
@Override
public KeyStore getTrustStore() throws Exception {
System.out.println("SslStoreProvider getTrustStore is called");
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return trustStore;
}
});
jef.setSslBundles(new SslBundles() {
@Override
public SslBundle getBundle(String name) throws NoSuchSslBundleException {
char[] password = "changeit".toCharArray();
System.out.println("Inside SSL BUNDLE prakrath code!");
return SslBundle.of(SslStoreBundle.of(
getKeyStore(password),
new String(password),
getTrustStore(password)
));
}
private KeyStore getKeyStore(char[] password) {
System.out.println("downloadCerts and copyCerts initial load");
System.out.println("SslStoreProvider getKeyStore is called");
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return keyStore;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private KeyStore getTrustStore(char[] password) {
System.out.println("SslStoreProvider getTrustStore is called");
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(new FileInputStream("/Users/prakrath/personal/teluskojava/servletjetty/src/main/resources/keystore.jks"), password);
return trustStore;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void addBundleUpdateHandler(String name, Consumer updateHandler) throws NoSuchSslBundleException {
}
});
return jef;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... st-version