Как использовать LUNA HSM с Java - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над приложением весенней загрузки, которому необходимо взаимодействовать с другой службой через соединение 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. Если кто-то делал это раньше, дайте совет.

...