stunnel+haproxy SSL
时间:2011-04-06 来源:wsky
最近在用stunnel做透明代理,配合haproxy做ssl方案,在用户和原有的反向代理之间加入stunnel,这样可以让用户和stunnel之间走ssl,stunnel之后的真实web就不用负担https的开销。
记录一下配置过程和问题,以下安装方式在centos和ubuntu上都配置通过:
首先先去stunnel官网上获取安装包,因为要给stunnel打haproxy的补丁,而haproxy官方提供的补丁目前版本是4.32的,所以stunnel选择4.32版本,官方提供的ftp上可以找到ftp://ftp.stunnel.org/stunnel/obsolete/4.x/,这里使用rsync同步对应的版本:
1: rsync.stunnel.org::stunnel/obsolete/4.x/stunnel-4.32.tar.gz stunnel-4.32.tar.gz
2: wget http://haproxy.1wt.eu/download/patches/stunnel-4.32-xforwarded-for.diff
3: tar -zxvf stunnel-4.32.tar.gz
4: cd stunnel-4.32
5: patch -p1 < ../stunnel-4.32-xforwarded-for.diff
6: ./configure
7: make && make install
在上述过程中如果出现"Couldn't find your SSL library installation dir",是缺少openssl,安装后在进行上述过程即可:
1: apt-get install libcurl3-openssl-dev
配置stunnel.conf:
1: sslVersion=all
2: fips=no
3: cert=/usr/local/etc/stunnel/stunnel.pem
4: CAfile=/usr/local/etc/stunnel/cacert.pem
5: pid =/var/run/stunnel.pid
6: setuid=root
7: setgid=root
8:
9: socket=l:TCP_NODELAY=1
10: socket=r:TCP_NODELAY=1
11: output=/var/log/stunnel.log
12:
13: [https]
14: accept=443
15: connect=127.0.0.1:8080
16: TIMEOUTclose=0
17: xforwardedfor=yes
-----------------------------------------------------------------------------
搞定上面的步骤就可以运行了:
1: stunnel
在运行stunel的时候若出现routines:FIPS_mode_set:fingerprint does not match错误,可以通过设置上述参数fips=no解决。若出现nobody权限,可设置:
1: chmod 755 /var/run/stunnel/
-------------------------------------------------------------------------------
关于ssl证书
使用自己签发的证书:
1: openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem
若是现有的证书导入pfx和CA(配置文件中设置对应的CAfile参数):
1: openssl
2: //cer转pem
3: openssl>x509 -in cacert.cer -out cacert.pem
4: //pfx转pem
5: openssl>pkcs12 -in stunnel.pfx -out stunnel.pem -nodes
-------------------------------------------------------------------------------
其他
stunnel只能对linux机器进行代理
简单高效,系统利器:)