问题描述
我正在研究春季启动中的相互身份验证,我可以在本地实现它并使其运行顺利。
但是我想从Amazon /获得证书/存储。 Google证书管理器,或者可能来自s3存储桶。
以前的配置
因为我在本地有商店,所以我可以得到它们
#ApplicationProperties.yaml
server.ssl.enabled=true
#KeyStore
server.ssl.key-alias=1
server.ssl.key-store=classpath:clientKeystore.p12
server.ssl.key-store-password=whatever
#TrustStore
server.ssl.trust-store=classpath:clientTrustStore.p12
server.ssl.trust-store-password=possiblyAnything
server.ssl.client-auth=need
RestTemplate配置
@Value("${server.ssl.trust-store}")
private String trustStorePath;
@Value("${server.ssl.trust-store-password}")
private String trustStorePass;
@Value("${server.ssl.key-store}")
private String keyStorePath;
@Value("${server.ssl.key-store-password}")
private String keyStorePass;
@Value("${server.ssl.key-alias}")
@Bean
public RestTemplate restTemplate()
{
SSLContext sslContext = null;
SSLConnectionSocketFactory sslSocketFactory =
new SSLConnectionSocketFactory(sslContext,NoopHostnameVerifier.INSTANCE);
sslContext = new SSLContextBuilder()
.loadKeyMaterial(keystore,keyStorePassword)
.loadTrustMaterial(trustStore,new TrustSelfSignedStrategy())
.build();
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslSocketFactory).build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
return new RestTemplate(requestFactory);
}
现在,相同的信任库和密钥库都在云中,我想 在应用程序加载/启动时获取它们。
我真的很困惑,为什么我们要同时在config(appPropeties)和sslContext中使用存储。有什么不同 ?
我不能仅将它们设置为sslContext吗?如果我能够做到这一点,我可以从云中获取它们,将其处理到密钥库和信任库中,并立即进行设置。
*是否有更好的工作方法?*
请原谅,如果这看起来很la脚,我是安全新手,所以我仍然在弄清楚事情的运作方式。
**还有一个问题**
- 在典型的客户端服务器设置(多台服务器)中,如果我想与相互TLS上的server1和http(不带ssl)上的server2通信,该怎么办
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)