带有tomcat的HAProxy的SSL证书 - 502 Bad Gateway

时间:2013-12-31 13:15:52

标签: ssl tomcat7 ssl-certificate haproxy

我正在尝试在ssl模式下使用不同VM上的2个tomcat实例进行haproxy工作(请参阅我之前的问题:HAProxy load balancing with tomcat SSL)。 目前,我设法让haproxy使用以下配置:

defaults
    log 127.0.0.1 local0
    option tcplog

frontend ft_test
    mode http
    bind 0.0.0.0:8443 ssl crt haproxy.pem
    timeout client 120000ms
    default_backend bk

backend bk
    mode http
    cookie JSESSIONID prefix
    server s1 vm1:80 cookie JSESSIONID_SERVER_1 check maxconn 32    
    server s2 vm2:80 cookie JSESSIONID_SERVER_2 check maxconn 32
    timeout connect 5000ms
    timeout server 120000ms

haproxy.pem是我从这里复制的文件(用于测试目的):http://blog.exceliance.fr/2012/09/04/howto-ssl-native-in-haproxy/

当我在VM上将端口从80更改为8443时,我尝试访问https://haproxy.vm.ip:8443(与80端口相同),我的浏览器出现502 Bad Gateway错误。 我猜这与ssl证书有关,但我不知道如何解决这个问题(这些问题对我来说很新,而且我找不到太多信息)。

每个tomcat VM的server.xml(它们都是相同的):

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
            maxThreads="150" scheme="https" secure="true"
            clientAuth="false" sslProtocol="TLS" 
            keystoreFile="${catalina.home}/conf/keystore"
            keystorePass="password" />

我是否需要在此处使用与haproxy配置相同的证书?我试过了,但它似乎没有用,我也没有找到haproxy和密钥库文件的例子。

那么,帮帮忙?想法?谢谢! :)

1 个答案:

答案 0 :(得分:0)

有同样的问题 -

我无法在没有接收间歇性502和503的情况下正确且一致地处理SSL流量。

我们最终使用了stunnel - http://www.stunnel.org/

设置和配置非常简单。 HAproxy只响应端口80并转发443以上,以便内部流量保持加密状态。

以下是一个示例stunnel.conf文件:

sslVersion = all
options = NO_SSLv2
cert=/etc/stunnel/wildcard.pem
setuid = root
setgid = root
pid = /var/run/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
output = /var/log/stunnel.log

[service1]
    accept = 10.0.0.10:443
    connect = 10.0.0.10:80
    TIMEOUTclose = 0

[service2]
    accept = 10.0.0.11:443
    connect = 10.0.0.11:80
    TIMEOUTclose = 0