Redis6.0新特性-TLS测试

本文详细介绍了如何在CentOS 7.3环境下为Redis 6.2.7编译时启用TLS支持,包括安装OpenSSL、生成测试证书、配置启动参数以及连接与验证过程。重点展示了TLS模式下客户端和服务端的交互与限制。
摘要由CSDN通过智能技术生成

背景

传输层安全性协议(英语:Transport Layer Security,缩写作TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。Redis6支持TLS,并且支持SSL。

1.目录设置

redis源码解压目录

/app/cachecloud/redis

测试环境:CENTOS7.3
redis版本:6.2.7

2.编译redis

要测试TLS,要在编译时选择编译TLS,跳转到redis源码解压目录,执行

make BUILD_TLS=yes

编译过程中出现如下错误:

ssl.c:45:25: 致命错误:openssl/ssl.h:没有那个文件或目录
 #include <openssl/ssl.h>

这时要中断编译,先安装openssl

yum install openssl-devel

安装好 open-ssl后再次执行make BUILD_TLS=yes命令即可编译成功

3.生成测试证书

在源码目录执行生成证书脚本

[root@redis-7-109 ~]# cd /app/cachecloud/redis
[root@redis-7-109 redis]# ./utils/gen-test-certs.sh
Generating RSA private key, 4096 bit long modulus
……

生成后在tests/tls目录下可以看到生成的证书文件

[root@redis-7-109 tls]# ls -l /app/cachecloud/redis/tests/tls/
总用量 44
-rw-r--r--. 1 root root 1879 711 11:30 ca.crt
-rw-r--r--. 1 root root 3243 711 11:30 ca.key
-rw-r--r--. 1 root root   17 711 11:30 ca.txt
-rw-r--r--. 1 root root 1456 711 11:30 client.crt
-rw-r--r--. 1 root root 1675 711 11:30 client.key
-rw-r--r--. 1 root root  163 711 11:30 openssl.cnf
-rw-r--r--. 1 root root 1399 711 11:30 redis.crt
-rw-r--r--. 1 root root  424 711 11:34 redis.dh
-rw-r--r--. 1 root root 1679 711 11:30 redis.key
-rw-r--r--. 1 root root 1456 711 11:30 server.crt
-rw-r--r--. 1 root root 1679 711 11:30 server.key

4.启动和连接

使用tls模式启动redis服务,如下命令

[root@redis-7-109 tls]# cd /app/cachecloud/redis
[root@redis-7-109 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

--tls-port 6379指定了tls端口为6379,--port 0 禁用非tls的端口。

连接tls模式redis服务,连接后可以正常执行命令

[root@redis-7-109 ~]# cd /app/cachecloud/redis
[root@redis-7-109 redis]# ./src/redis-cli --tls \
>     --cert ./tests/tls/redis.crt \
>     --key ./tests/tls/redis.key \
>     --cacert ./tests/tls/ca.crt
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

如果不使用tls模式直接连接tls模式的redis服务,虽然也可以正常连接,但是无法执行命令。

#客户端表现
[root@redis-7-109 ~]# redis-cli -p 6379
127.0.0.1:6379> get hello
Error: Connection reset by peer

#服务端表现
[root@redis-7-109 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
9591:C 11 Jul 2022 11:51:18.598 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
9591:C 11 Jul 2022 11:51:18.598 # Redis version=6.2.7, bits=64, commit=00000000, modified=0, pid=9591, just started
……省略……
9591:M 11 Jul 2022 11:51:18.612 * Ready to accept connections
9591:M 11 Jul 2022 11:51:43.594 # Error accepting a client connection: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol (conn: fd=8)
9591:M 11 Jul 2022 11:51:50.771 # Error accepting a client connection: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol (conn: fd=8)
9591:M 11 Jul 2022 14:02:37.069 # Error accepting a client connection: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol (conn: fd=8)

参考:
https://redis.io/docs/manual/security/encryption/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值