【发布时间】:2018-01-19 05:12:50
【问题描述】:
我有一个 zuul 代理作为边缘服务器,我的微服务是非 jvm 应用程序,我不使用 Ribbon 或 eureka。这些微服务只能通过 https 访问,并且需要客户端证书才能与它们通信。 zuul 是否支持带有下游证书的相互身份验证?如果是这样,我该如何在我的 zuul 服务器上进行设置。
【问题讨论】:
标签: java spring ssl netflix-zuul
我有一个 zuul 代理作为边缘服务器,我的微服务是非 jvm 应用程序,我不使用 Ribbon 或 eureka。这些微服务只能通过 https 访问,并且需要客户端证书才能与它们通信。 zuul 是否支持带有下游证书的相互身份验证?如果是这样,我该如何在我的 zuul 服务器上进行设置。
【问题讨论】:
标签: java spring ssl netflix-zuul
如果您使用的是 Spring Cloud Zuul,您可以通过定义 CloseableHttpClient bean 来提供您自己的 Http Client,如下所示。 (受 Edgware 版本支持)
@Bean
public CloseableHttpClient httpClient() throws Throwable {
return HttpClients.custom()
.......ssl context or sslsocketfactory settging.
.build();
}
如果你提供这种类型的 bean,Zuul 会在发出 http 请求时使用这个 bean。因此,您可以定义自定义 SSL 上下文以支持客户端证书。您可以在 apache http 客户端中找到许多支持客户端证书的示例,例如 this 或 this。
【讨论】:
*** ServerHelloDone [read] MD5 and SHA1 hashes: len = 4 0000: 0E 00 00 00 .... Warning: no suitable certificate found - continuing without client authentication *** Certificate chain <Empty> *** *** ECDHClientKeyExchange
-Djavax.net.debug=all,或者您可以在代码中设置等效的系统属性