为了能够支持客户端证书,我进行了扩展
ProxyHttpConnectionManager extends DefaultApacheHttpClientConnectionManagerFactory
并覆盖了newConnectionManager
if (disableSslValidation) {
try {
final SSLContext sslContext = SSLContexts.custom()
.loadKeyMaterial((new File(keystore)), keyStorePass.toCharArray(), keyStorePass.toCharArray())
.loadTrustMaterial(new File(trustStore)).build();
registryBuilder.register(HTTPS_SCHEME, new SSLConnectionSocketFactory(
sslContext, NoopHostnameVerifier.INSTANCE));
}
catch (Exception e) {
LOG.warn("Error creating SSLContext", e);
}
这是我做过的唯一定制。对于需要客户端证书的服务器,Zuul不会使HttpConnections保持活动状态。对于Https上的所有其他服务器,以前的连接将被重用。
SSL日志和TCP转储摘要
无需客户证书
SYN
,客户问候
服务器你好
数据交换
请求2-数据交换
超时后关闭
需要客户端证书的服务器
SYN
CLient Hello
服务器你好
数据交换
FIN
要求2 - SYN
你好,再一次
数据交换
鳍