聊聊Redis 6.0新特性之TLS通道加密

聊聊Redis 6.0新特性之TLS通道加密

Scroll Down

Redis 6.0开始支持TLS通道加密,提高了redis的安全性。Redis作为缓存数据库,里面很有可能缓存重要的敏感信息,所以支持tls通道加密还是很有必要的,当然敏感信息还是建议加密保存。

什么是TLS通道加密?

说TLS之前,先说下SSL,这个大家肯定不陌生,大致对两者坐下介绍:

  1. SSL加密是Netscape公司所提出的安全保密协议,在浏览器和Web服务器之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。
  2. TLS是安全传输层协议。安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议上面。

ssls

扩展资料:

  1. SSL加密并不保护数据中心本身,而是确保了SSL加密设备的数据中心安全,可以监控企业中来往于数据中心的最终用户流量。
    从某个角度来看,数据中心管理员可以放心将加密装置放在某个地方,需要使用时再进行应用,数据中心应该会有更合理的方法来应对利用SSL的恶意攻击,需要找到SSL加密应用的最佳实践。
  2. TLS协议是可选的,必须配置客户端和服务器才能使用。
    主要有两种方式实现这一目标:一个是使用统一的TLS协议通信端口(例如:用于HTTPS的端口443)。
    另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:邮件、新闻协议和STARTTLS)。

一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手,客户端和服务器协商各种参数用于创建安全连接。

下面简单介绍下redis6.0支持TLS通道加密的步骤:

一:创建证书

mkdir -p tests/tls
openssl genrsa -out tests/tls/ca.key 2048
openssl req \
    -x509 -new -nodes -sha256 \
    -key tests/tls/ca.key \
    -days 3650 \
    -subj '/O=Redis Test/CN=Certificate Authority' \
    -out tests/tls/ca.crt
openssl genrsa -out tests/tls/redis.key 2048
openssl req \
    -new -sha256 \
    -key tests/tls/redis.key \
    -subj '/O=Redis Test/CN=Server' | \
    openssl x509 \
        -req -sha256 \
        -CA tests/tls/ca.crt \
        -CAkey tests/tls/ca.key \
        -CAserial tests/tls/ca.txt \
        -CAcreateserial \
        -days 365 \
        -out tests/tls/redis.crt
openssl dhparam -out tests/tls/redis.dh 2048

证书生成和git密钥类似,如下图:

redis6image

二:编译redis

使用下面命令编译redis

make BUILD_TLS=yes -j8

三:启动服务端

使用下面命令启动redis服务:

./src/redis-server --tls-port 6379 --port 0 \
        --tls-cert-file ./tests/tls/redis.crt \
        --tls-key-file ./tests/tls/redis.key \
        --tls-ca-cert-file ./tests/tls/ca.crt

结果如下:
redis6image1

四:客户端链接

使用客户端链接redis服务:

./src/redis-cli --tls \
        --cert ./tests/tls/redis.crt \
        --key ./tests/tls/redis.key \
        --cacert ./tests/tls/ca.crt

结果如下:
redis6image3

也可以使用下面命令:

./src/redis-cli --tls --insecure

redis6image4