【问题标题】:How to use LUNA HSM with Java如何在 Java 中使用 LUNA HSM
【发布时间】:2020-08-04 15:24:36
【问题描述】:

我正在开发一个 Spring Boot 应用程序,该应用程序需要使用 TLS 证书通过 HTTPS 连接与另一个服务进行通信。 早些时候,要求并不清楚,我开始使用 Java Keystore/Truststore 来获取证书和密钥对。 但后来我们决定迁移到 HSM Luna 客户端,我们需要在其中生成证书和公钥/私钥。

我浏览了 Thales 网站上的 Luna 文档,了解如何生成密钥对和 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 应用程序类路径中添加密钥库/信任库文件,就像我之前所做的那样。 该文档没有描述使用密钥库/信任库的任何示例代码。

我只想使用 RestTemplate 对另一个服务进行 HTTPS 调用,并在我的 JAVA 应用程序中接收响应。

有人可以帮助我理解这一点。如果有人能提供sn-ps的代码就更好了。

我在下面发布我的代码:

@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());
     }
}

我不确定这段代码是否有效。我做了很多谷歌,然后找到了我们如何使用 Luna 客户端创建 SSL 上下文。 如果有人之前做过,请提供一些指导。

【问题讨论】:

  • 有人可以回复并帮助我吗?
  • 我没有这样做,但我的理解是你需要有他们的 java sdk 并使用它。你有吗?
  • @AlwynSchoeman,我已经在使用他们的 LunaProvider.jar。
  • 啊,好的,抱歉,我无法帮助您使用 java api。我需要通过套接字使用它,而且我不使用证书的东西。

标签: java spring-boot hsm


【解决方案1】:

您可以像使用 KeyStore 一样使用它。见下文

@Service
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class HsmService {

  public KeyStore hsmKeyStore(String hsmPartition, String hsmPassword) throws
KeyStoreException,                                                                   CertificateException,                                                                       NoSuchAlgorithmException,                                                                       IOException {

    LunaProvider lunaProvider = new LunaProvider();
    Security.addProvider(lunaProvider);

    LunaSlotManager lunaSlotManager = LunaSlotManager.getInstance();
    lunaSlotManager.login(hsmPartition, hsmPassword);


    KeyStore keyStore = KeyStore.getInstance("Luna");
    keyStore.load(null, null);
    return keyStore;
  }
}

拥有密钥库后,您可以对其执行所有标准加密操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2018-05-13
    • 2014-05-05
    相关资源
    最近更新 更多