Redis 介绍
Redis 最常用的功能是作为缓存数据库,保存的数据都存放在内存中,这样读写的速度极快,也分担了主数据库的部分压力。Redis 也可以将保存在内存的数据持久化到硬盘中,这样重启Redis 时,Redis的key:value 数据不会丢失。今天这篇文件只是简单介绍Redis 单节点模式步骤。
Redis 单节点部署
Redis 下载连接:https://download.redis.io/releases/
安装redis 依赖包
yum -y install gcc gcc- c++ make openssl-devel yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsRedis 从版本6.2.0开始支持TLS,所以这里我用的是版本6.2.0来部署redis
使用wget 下载并上传到/data/app/pats_opts 并编译安装
cd /data/app/pats_opts wget https://download.redis.io/releases/redis-6.2.0.tar.gz tar -zxvf redis-6.2.0.tar.gz cd redis-6.2.0 make MALLOC=libc BUILD_TLS=yes #此处开启tls ,不开启的话就不支持tls功能编辑 redis.conf 配置文件
#vim redis.conf bind 0.0.0.0 protected-mode no daemonize yes pidfile /data/app/pats_opts/redis-6.2.0/pid/redis.pid logfile "/data/app/pats_opts/redis-6.2.0/log/redis.log" requirepass 123456 appendonly yes appendfilename "appendonly.aof" #配置结束后报错退出,然后启动redis 服务 #启动redis 命令: cd /data/app/pats_opts/redis-6.2.0 ./src/redis-server redis.conf到这里redis 单节点模式就配置好了。
Redis TLS 配置及客户端配置案例
从Redis 6.2.0版本就开始支持TLS,所以在下载的redis 源码包中有生产TLS证书的文件,直接使用即可
cd /data/app/pats_opts/redis-6.2.0/utils/ ./gen-test-certs.sh #直接这样执行即可生成TLS证书,证书默认有效期是1年,在开发测试环境中如果嫌时间段,可以在gen-test-certs.sh 中手动修改证书有效期时间证书路径/data/app/pats_opts/redis-6.2.0/utils/tests/tls
证书配置
#将证书从默认路径中复制到指定的tls文件夹下面 cd /data/app/pats_opts/redis-6.2.0 mkdir certs cp utils/tests/tls/* certs/ #redis.conf 增加tls配置 port 0 tls-port 6379 tls-cert-file /data/app/pats_opts/redis-6.2.0/certs/redis.crt tls-key-file /data/app/pats_opts/redis-6.2.0/certs/redis.key tls-dh-params-file /data/app/pats_opts/redis-6.2.0/certs/redis.dh tls-ca-cert-file /data/app/pats_opts/redis-6.2.0/certs/ca.crt masterauth "123456"证书配置后 重启redis 即可
客户端证书格式转换:redis客户端和java 程序
#生成redis 客户端使用的证书格式 cd /data/app/pats_opts/redis-6.2.0/certs openssl x509 -in ca.crt -out ca.pem -outform PE openssl x509 -in redis.crt -out redis.pem -outform PE openssl rsa -in ca.key -out ca_key.pem openssl rsa -in redis.key -out redis_key.pem #生成java程序使用的证书格式 openssl pkcs12 -export -in redis.crt -inkey redis.key -out redis_key_store.p12 -passout pass:123456 keytool -import -file ca.crt -alias redis-ca -keystore truststore.jks -storepass 123456 #密码-storepass 自行定义客户端配置案例
java程序配置案例:
spring.redis.keyStoreFile=/data/app/ssl/redis_key_store.p12 spring.redis.keyStorePassword=123456 spring.redis.trustStoreFile=/data/app/ssl/truststore.jks spring.redis.trustStorePassword=123456Redis ACL 配置
大家在用redis时不知道有没有发现,在连接时只需要输入密码即可,不需要输入用户名。在生产安全扫描时,这种情况是不符合的。
Redis 默认user是default,在不填写时,默认就是default,所以只需要输入密码即可。
下面的操作是需要禁用default,手动新增登录信息:user and password
#编辑redis.conf,在配置文件最后面加上如下代码 user default off #禁用默认用户 user redisuser on >123456 ~* +@all #新增用户名:redisuser 密码:123456 #下面还有一种配置方式,不推荐,有点混乱。如下所示 requirepass oldpass user default on >newpass ~* +@all user redisuser on >app_pass ~* +@all #上面配置的有三个认证方式都能登录成功。 #auth oldpass 是默认的认证方式,针对的是默认的default #auth newpass 是acl新定义的方式 #auth app_pass 是自定义的用户和密码