Jetty SNI主机检查Wlldfly反向代理背后的失败

时间:2019-01-14 15:49:03

标签: java jetty wildfly reverse-proxy sni

我正在为Wildfly配置反向代理,以便可以通过它访问Jetty。 SSL在Wildfly和Jetty上均已配置,并且都使用相同的密钥库(放置在共享位置)。但是,两者都在单独的计算机上运行。当我尝试通过反向代理从浏览器访问Jetty时,出现以下异常: HTTP错误:400 访问/ solr时出现问题。原因: 主机与SNI不匹配

在进一步调查中,我发现在TLS握手期间,SNI选择了正确的证书,但是在从Jetty请求资源时,主机标头包含Wildfly的主机名(由浏览器发送给反向代理的原始主机标头)和SNI​​主机Jetty无法对所选证书进行检查,因为它在证书DNS名称中不包含Wildfly的主机名。

反向代理配置如下:-

<host name="default-host" alias="localhost">
    <location name="/" handler="welcome-content"/>
    <location name="/solr" handler="solrproxy">
    </location>
    <filter-ref name="server-header"/>
    <filter-ref name="x-powered-by-header"/>
</host>

<reverse-proxy name="solrproxy">
    <host name="jetty_host" outbound-socket-binding="jettyFeed" scheme="https" path="/solr" instance-id="jettyRedirect" security-realm="SslRealm"/>
</reverse-proxy>

<outbound-socket-binding name="jettyFeed">
    <remote-destination host="jetty_host" port="jetty_port"/>
</outbound-socket-binding>

该问题的可能解决方案是什么?

注意:我无法通过反向代理重写主机标头,因为我使用KeyCloak进行身份验证,并且它也使用主机标头重定向客户端。

0 个答案:

没有答案