具有驻留在密钥库和信任库云管理器中的云的相互身份验证双向TLS / SSL-春季启动

问题描述


我正在研究春季启动中的相互身份验证,我可以在本地实现它并使其运行顺利。
但是我想从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 (将#修改为@)