随着某些业务安全性要求提高,敏感数据经过网络时需要加密传输。如MySQL, Redis这些协议在网络中传输是可以通过抓包分析到数据包内部信息的。

本文只是简单记录使用TLS加密某些软件数据流使用,本质上无论spiped还是stunnel都是通过建立隧道的方式进行安全传输。spiped是Redis官方推荐一个采用AES加密算法开源工具,该工具作者是OpenBSD的安全协会成员;stunnel则是一款采用非对称加密算法且闭源的工具,支持多个服务使用,相对spipped来说可以在多个场景使用。

Remote Redis: Spiped vs Stunnel这篇文章对比了两款工具的性能,感兴趣的可以自行验证。

#示例

spipped

1
2
3
4
5
6
7
8
9
10
11
# 生成密钥
dd if=/dev/urandom bs=128 count=1 > secret.key

# 本地运行 (-e 加密 -s 源 -t 目标)
spiped -e -s '127.0.0.1:6379' -t 服务器IP:8000 -k secret.key

# 服务端运行 (-d 解密)
spiped -d -s '0.0.0.0:8000' -t '127.0.0.1:6379' -k secret.key

# 查看帮助 (连接树,超时设置)
spiped -h

stunnel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# /etc/stunnel/redis-client.conf
cert = /etc/stunnel/private.pem
client = yes
pid = /var/run/stunnel.pid
[redis]
accept = 127.0.0.1:6379
connect = 服务端IP:6380

# /etc/stunnel/redis-server.conf
cert = /etc/stunnel/private.pem
pid = /var/run/stunnel.pid
[redis]
accept = 服务端IP:6380
connect = 127.0.0.1:6379

#参考

spiped加密通信
stunnel文档
spiped vs stunnel性能对比
使用STUNNEL加密REDIS通信
MySQL启用的SSL连接的思考与实践

评论