应用场景
redis服务不能直接通过客户端访问,而是通过有相应的证书才能连接。
1.Openssl证书生成
创建一个目录保存证书
mkdir -p /data01/ssl_redis/tls(注意创建目录不同,记得修改下文中目录地址)
openssl req \
-x509 -new -nodes -sha256 \
-key ssl_redis/tls/ca.key \
-days 3650 \
-subj '/O=Redis Test/CN=Certificate Authority' \
-out ssl_redis/tls/ca.crt
openssl genrsa -out ssl_redis/tls/redis.key 2048
openssl req \
-new -sha256 \
-key ssl_redis/tls/redis.key \
-subj '/O=Redis Test/CN=Server' | \
openssl x509 \
-req -sha256 \
-CA ssl_redis/tls/ca.crt \
-CAkey ssl_redis/tls/ca.key \
-CAserial ssl_redis/tls/ca.txt \
-CAcreateserial \
-days 365 \
-out ssl_redis/tls/redis.crt
openssl dhparam -out ssl_redis/tls/redis.dh 2048
2.下载并安装Redis
$ tar xzf redis-6.2.11.tar.gz
$ cd redis-6.2.11
# 注意这里make的时候,需要开启TLS。
$ make BUILD_TLS=yes
3.通过证书运行redis
nohup ./src/redis-server --tls-port 6379 --port 0 \
--tls-cert-file /data01/ssl_redis/tls/redis.crt \
--tls-key-file /data01/ssl_redis/tls/redis.key \
--tls-ca-cert-file /data01/ssl_redis/tls/ca.crt &
4.验证TSL是否生效
首先不通过证书连接,连接后set值时,直接提示失败。
./src/redis-cli
127.0.0.1:6379> set key 1
Error: Connection reset by peer
然后我们通过证书链接,set key 1 ,成功。
./src/redis-cli --tls \
--cert /data01/ssl_redis/tls/redis.crt \
--key /data01/ssl_redis/tls/redis.key \
--cacert /data01/ssl_redis/tls/ca.crt
127.0.0.1:6379> set key 1
OK