【发布时间】:2018-06-20 13:29:16
【问题描述】:
我的任务是在 Zuul 代理应用程序(客户端)和微服务之一(服务器)之间设置两种方式的 ssl 身份验证。两者都是 Spring Boot 应用程序。 我可以使用自签名证书和下一个配置在本地完成:
对于服务器,我在 yml 文件中设置了 SSL:
server:
port: 8081
ssl:
enabled: true
key-store: classpath:MyServer.jks
key-store-password: password
trust-store: classpath:MyServer.jks
trust-store-password: password
client-auth: need
对于 Zuul Proxy 应用程序,我已经为 CloseableHttpClient 配置了密钥库和配置了所需证书的信任库:
@Bean
public CloseableHttpClient zuulHttpClient() throws Throwable {
final KeyStore ks = KeyStore.getInstance("JKS");
ks.load(keyStore.getInputStream(), keyStorePassword.toCharArray());
LOGGER.info("Loaded keyStore: " + keyStore.getURI().toString());
try {
keyStore.getInputStream().close();
} catch (final IOException e) {
LOGGER.warning("IOException during loading keyStore");
}
final KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(ks, keyStorePassword.toCharArray());
final KeyStore ts = KeyStore.getInstance("JKS");
ts.load(trustStore.getInputStream(), trustStorePassword.toCharArray());
LOGGER.info("Loaded trustStore: " + trustStore.getURI().toString());
try {
trustStore.getInputStream().close();
} catch (final IOException e) {
LOGGER.warning("IOException during loading trustStore");
}
final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(ts);
final SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(ts, new TrustSelfSignedStrategy()).loadKeyMaterial(ks, keyStorePassword.toCharArray()).build();
final HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
httpClientBuilder.setSSLContext(sslContext);
return httpClientBuilder.build();
}
它在本地工作,但我在 PCF 上设置它时遇到问题。我能够推送客户端应用程序,但不能推送服务器应用程序。它只是冻结了一段时间,并且无法在 PCF 上启动,但日志还可以,没有抛出异常。关闭服务器 enabled: false 的 SSL,让我推送应用程序,所以看起来这就是问题所在。
所以我的问题是,有什么简单的方法可以在 PCF 上设置 2 路 ssl 开箱即用?我找到了一些关于此的主题,即关于配置 Gorouter,目前正在阅读有关此主题的文档,但正在考虑是否有更简单明了的解决方案。
【问题讨论】:
标签: spring-boot ssl cloud-foundry mutual-authentication