Я работаю над приложением весенней загрузки, которому необходимо взаимодействовать с другой службой через соединение HTTPS с использованием сертификатов TLS. Раньше требования были нечеткими, и я начал использовать Java Keystore / Truststore для сертификатов и пар ключей. Но позже мы решили перейти на HSM Luna Client, где нам нужно сгенерировать сертификаты и открытые / закрытые ключи.
Я просмотрел документацию Luna с веб-сайта Thales о том, как мы можем генерировать пары ключей и файлы csr .
https://thalesdocs.com/gphsm/luna/7.2/docs/network/Content/sdk/java/java_keytool_with_luna_hsm.htm
Но я не понимаю, как я могу использовать этот сертификат в моем java приложении для соединения SSL / TLS.
Должен ли я теперь использовать библиотеки JSP / JCPROV. Или я могу каким-то образом добавить файлы хранилища ключей / доверенных сертификатов в мой java путь к классам приложения, как я делал раньше. В документации нет примеров кода для использования хранилища ключей / доверенных сертификатов.
Я просто хочу выполнять HTTPS-вызовы другой службы с помощью RestTemplate и получать ответ в моем JAVA приложении.
Может кто-нибудь, пожалуйста, помогите мне понять это. Было бы лучше, если бы кто-то мог предоставить и фрагменты кода.
Я размещаю свой код ниже:
@Configuration
Class ApplicationConfig{
static {
com.safenetinc.luna.LunaSlotManager.getInstance().login("Partition-password");
java.security.Provider provider = new com.safenetinc.luna.provider.LunaProvider();
java.security.Security.removeProvider(provider.getName());
java.security.Security.insertProviderAt(provider,3)
}
public ClientHttpRequestFactory requestFactory(){
KeySTore keystore = KeyStore,getInstance("Luna");
InputStream inputStream = new FileInputStream("path/to/keystore");
keystore.load(inputStream,"password".toCharArray());
SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial(keystore,
"password".toCharArray())
.loadTrustMaterial("pathTocacert",
"password".toCharArray())
.setProtocol("TLSv1.2")
.build();
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(requestFactory());
}
}
Я не уверен, что этот код будет работать. Я много работал с Google, а затем нашел, как мы можем создать контекст SSL с клиентом Luna. Если кто-то делал это раньше, дайте совет.