【发布时间】: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