标签:eve dev 访问 rsa connect 使用 bug cat 编译
一个场景:目前越来越多的业务需要远程读写Redis,而Redis 本身不提供 SSL/TLS 的支持,在需要安全访问的环境下。
这时候就需要额外的手段进行加密认证,这里有两种手段:spiped 和 ngx stream ssl proxy
现在服务端起一个监听在127 的 Redis server
[root@ ~]# wget http://www.tarsnap.com/spiped/spiped-1.6.0.tgz
[root@ ~]# tar xf spiped-1.6.0.tgz
[root@ ~]# cd spiped-1.6.0
[root@ ~]# tar xf spiped-1.6.0.tgz
[root@ ~]# cd spiped-1.6.0
[root@ spiped-1.6.0]# make && make install
[root@ spiped-1.6.0]# /usr/local/bin/spiped -h
spiped: illegal option -- -h
usage: spiped {-e | -d} -s <source socket> -t <target socket> -k <key file>
[-DFj] [-f | -g] [-n <max # connections>] [-o <connection timeout>]
[-p <pidfile>] [-r <rtime> | -R]
spiped -v
创建key,并将key分发到代理客户端
[root@ ~]# dd if=/dev/urandom bs=32 count=1 of=/var/spiped/redis_proxy.key
启动服务端和客户端代理:
#服务端:
[root@ ~]# /usr/local/bin/spiped -d -s ‘[0.0.0.0]:6011‘ -t ‘[127.0.0.1]:6001‘ -k /var/spiped/redis_proxy.key -p /var/spiped/redis_proxy_srv.pid
#客户端代理:
[root@ ~]# /usr/local/bin/spiped -e -s ‘[127.0.0.1]:6002‘ -t ‘[x.x.x.x]:6011‘ -k /var/spiped/redis_proxy.key -p /var/spiped/redis_proxy_cli.pid
客户端测试:
[root@ ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6002 -a redis@passwd ping
PONG
参考:http://www.tarsnap.com/spiped.html
配置自签证书,略
编译nginx需要加入--with-stream --with-stream_ssl_module 选项
服务端代理配置:
upstream redis6001_server{
server 127.0.0.1:6001 max_fails=3 fail_timeout=10s;
}
server{
listen 6010 ssl;
ssl_certificate /data/ssl/tcp_ssl_proxy/master.crt; #服务端证书
ssl_certificate_key /data/ssl/tcp_ssl_proxy/master.key; #服务端key
ssl_verify_client on; #开启对客户端的认证
ssl_client_certificate /data/ssl/tcp_ssl_proxy/cacert.pem; #用于认证客户端ca证书
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
proxy_connect_timeout 15s;
proxy_timeout 15s;
proxy_next_upstream_timeout 15s;
proxy_pass redis6001_server;
error_log /data/logs/redis6001_sslproxy_srv6010.log debug;
}
客户端代理配置:
upstream redis6001_server{
server 128.1.145.67:6010 max_fails=3 fail_timeout=10s;
}
server{
listen 127.0.0.1:6001;
proxy_ssl_name tcp_ssl_proxy.com; #与证书中的hostname一直,覆盖用于验证后端的hostname,并通过SNI在与后端建立连接时传递,默认proxy_pass地址的host部分会被使用。
proxy_ssl on;
proxy_ssl_certificate /data/ssl/tcp_ssl_proxy/master.crt; #客户端证书
proxy_ssl_certificate_key /data/ssl/tcp_ssl_proxy/master.key; #客户端key
proxy_ssl_verify on; #开启对服务端的认证
proxy_ssl_trusted_certificate /data/ssl/tcp_ssl_proxy/cacert.pem; #用于认证服务端ca证书
ssl_session_timeout 10m;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
proxy_connect_timeout 15s;
proxy_timeout 15s;
proxy_next_upstream_timeout 15s;
proxy_pass redis6001_server;
error_log /data/logs/redis_sslproxy_cli6001.log debug;
}
参考链接:
1、https://blog.lyz810.com/article/2016/06/ngx_stream_proxy_module_doc_zh-cn/
2、https://blog.lyz810.com/article/2016/06/ngx_stream_ssl_module_doc_zh-cn/
3、https://my.oschina.net/foreverich/blog/1517128?utm_medium=referral
标签:eve dev 访问 rsa connect 使用 bug cat 编译
原文地址:https://www.cnblogs.com/wshenjin/p/10376614.html