docker安装 redis 并且加密开启SSL/TLS通道
拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest
docker tag registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest redis:latest
要在 Docker 容器中启动 Redis 并开启 SSL/TLS 加密,需按照以下步骤修改启动命令和配置文件:
- 生成或获取 SSL 证书
首先,你需要为 Redis 服务生成 SSL 证书和私钥(或者使用已有的证书)。可以使用 openssl 生成自签名证书:
# 生成私钥
openssl genrsa -out /data/redis/ssl/redis-server.key 2048# 生成自签名证书
openssl req -new -x509 -key /data/redis/ssl/redis-server.key -out /data/redis/ssl/redis-server.crt -days 3650# 如果需要客户端认证,也生成客户端证书
openssl genrsa -out /data/redis/ssl/redis-client.key 2048
openssl req -new -x509 -key /data/redis/ssl/redis-client.key -out /data/redis/ssl/redis-client.crt -days 3650
确保生成的证书和密钥文件保存在 /data/redis/ssl/ 目录下。
- 修改 Redis 配置文件
编辑挂载到容器的 Redis 配置文件 /data/redis/redis.conf,添加 SSL/TLS 的相关配置:
# 指定 Redis 使用的证书和密钥文件
tls-cert-file /etc/redis/ssl/redis-server.crt
tls-key-file /etc/redis/ssl/redis-server.key
# 如果有 CA 证书,指定 CA 证书路径
tls-ca-cert-file /etc/redis/ssl/ca.crt # 可选项,如果需要客户端认证
# 是否强制客户端认证
tls-auth-clients no # 如果需要客户端认证,则设为yes
# 启用 TLS 端口
port 0 # 禁用未加密的默认端口
tls-port 6379 # 启用加密的 TLS 端口
# 可选配置:控制加密算法
tls-ciphers "DEFAULT:!aNULL:!eNULL:!SSLv2" # 可选的加密套件配
- 运行 Docker 容器
在 Docker 容器中运行 Redis,并确保挂载了证书和密钥文件的目录,同时配置 TLS 端口。你的 Docker 命令需要修改为:
docker run --restart=always --sysctl net.core.somaxconn=1024 \-p 6379:6379 \--name redis \-v /data/redis/redis.conf:/etc/redis/redis.conf \-v /data/redis/log/:/var/log/redis/ \-v /data/redis/data:/data \-v /data/redis/ssl:/etc/redis/ssl \ # 挂载SSL证书和密钥-d redis redis-server /etc/redis/redis.conf --tls-port 6379 --tls-cert-file /etc/redis/ssl/redis-server.crt --tls-key-file /etc/redis/ssl/redis-server.key --tls-ca-cert-file /etc/redis/ssl/ca.crt --appendonly yes --requirepass 87vhqEneQ5u8
通过 -v /data/redis/ssl:/etc/redis/ssl 挂载证书和密钥到容器。
使用 --tls-port 6379 启动 Redis 的 TLS 加密端口。
4. 客户端连接(使用 TLS)
要连接到启用了 TLS 的 Redis 实例,需要使用支持 TLS 的客户端。以下是 redis-cli 使用 TLS 连接的命令:
redis-cli --tls \--cert /data/redis/ssl/redis-client.crt \--key /data/redis/ssl/redis-client.key \--cacert /data/redis/ssl/ca.crt \-h redis-server-host \-p 6379 \-a 87vhqEneQ5u8
- 验证 SSL/TLS 是否启用
运行以下命令来测试是否通过 TLS 连接:
redis-cli --tls -h redis-server-host -p 6379 -a 87vhqEneQ5u8 ping
springBoot 配置文件如何连接
要在 Spring Boot 中通过 SSL/TLS 连接启用 SSL 的 Redis 实例,您需要在 Spring Boot 的 application.yml 或 application.properties 文件中进行相应的配置。
假设 Redis 已启用 SSL,并且 Redis 需要密码验证。以下是如何在 Spring Boot 配置文件中进行连接的步骤。
- 使用 application.yml 配置 Redis 连接
spring:redis:host: redis-server-host # Redis 服务器的主机名或IPport: 6379 # Redis TLS 端口password: 87vhqEneQ5u8 # Redis 密码ssl: true # 启用 SSLlettuce:pool:max-active: 8 # 连接池的最大活跃连接数max-idle: 8 # 连接池中最大的空闲连接数min-idle: 0 # 连接池中最小的空闲连接数
在此配置中:
ssl: true 用于启用 Redis 的 SSL/TLS 连接。
host 和 port 是 Redis 服务器的地址和 TLS 端口。
password 是 Redis 的连接密码。
2. 使用 application.properties 配置 Redis 连接
spring.redis.host=redis-server-host # Redis 服务器的主机名或IP
spring.redis.port=6379 # Redis TLS 端口
spring.redis.password=87vhqEneQ5u8 # Redis 密码
spring.redis.ssl=true # 启用 SSL
spring.redis.lettuce.pool.max-active=8 # 连接池最大活跃连接数
spring.redis.lettuce.pool.max-idle=8 # 连接池最大空闲连接数
spring.redis.lettuce.pool.min-idle=0 # 连接池最小空闲连接数
- 自定义 LettuceClientConfiguration(如果需要指定证书等更多配置)
如果需要更高级的 SSL 配置(如指定客户端证书等),你可以在 RedisConnectionFactory 中自定义 LettuceClientConfiguration:
import io.lettuce.core.SslOptions;
import io.lettuce.core.resource.ClientResources;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import java.time.Duration;@Configuration
public class RedisConfig {@Beanpublic LettuceConnectionFactory redisConnectionFactory() {// Redis 单节点配置RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();redisConfig.setHostName("redis-server-host");redisConfig.setPort(6379);redisConfig.setPassword("87vhqEneQ5u8");// 配置 SSLSslOptions sslOptions = SslOptions.builder().jdkSslProvider() // 使用JDK默认的SSLProvider.build();// Lettuce 配置,启用SSLLettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder().useSsl() // 启用SSL.sslOptions(sslOptions).commandTimeout(Duration.ofSeconds(60)).build();return new LettuceConnectionFactory(redisConfig, clientConfig);}
}
这段代码通过 LettuceClientConfiguration 自定义 SSL 选项并创建 Redis 连接工厂。
相关文章:
docker安装 redis 并且加密开启SSL/TLS通道
拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest docker tag registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest redis:latest要在 Docker 容器中启动 Redis 并开启 SSL/TLS 加密,需按照以下步骤修改启动命令和配置…...
什么是ARM架构?什么是X86架构?两者的区别是什么?
一、什么是ARM架构 (一)起源于发展 ARM 架构由英国剑桥的 Acorn 计算机公司开发。因市场无合适产品,Acorn 自行设计出第一款微处理器,命名为 ARM。此后 ARM 架构不断发展,1990 年为与苹果合作成立 ARM 公司࿰…...
【vscode】vscode paste image插件设置
本文首发于 ❄️慕雪的寒舍 vscode编辑md文件的时候,如果想插入图片,自带的粘贴只会粘贴到当前目录下,也没有文件重命名,很不友好。 在扩展商店里面有mushan的Paste Image插件,相比自带的,更加友好一点。但…...
自定义string类
#include <iostream> #include <string> int main() { std::string str "Hello, World!"; // 使用 c_str() 将 std::string 转换为 C 风格字符串,并传递给 printf printf("The string is: %s\n", str.c_str()); // 尝试修改…...
Python | Leetcode Python题解之第387题字符串中的第一个唯一字符
题目: 题解: class Solution:def firstUniqChar(self, s: str) -> int:position dict()q collections.deque()n len(s)for i, ch in enumerate(s):if ch not in position:position[ch] iq.append((s[i], i))else:position[ch] -1while q and po…...
RocketMQ 消费时序列化报错问题分析及解决
问题背景 在2024年3月7日,系统消费 RocketMQ 消息时出现了序列化报错,错误信息显示为: java.io.InvalidClassException: com.xxx.xxx.bean.mg.GoodsChangeLogMessage; local class incompatible: stream classdesc serialVersionUID... 这是…...
全能与专精:探索未来AI模型的发展趋势与市场潜力
文章目录 每日一句正能量前言AI模型的全面评估和比较AI模型的专精化和可扩展性AI模型的合理使用和道德规范后记 每日一句正能量 一个人,如果没有经受过投资失败的痛楚,又怎么会看到绝望之后的海阔天空。很多时候,经历了人生中最艰难的事&…...
Python深度学习:【开源数据集系列】ImageNet数据集
ImageNet 是一个大规模的视觉数据集,是计算机视觉领域最重要的基准数据集之一。该数据集由普林斯顿大学和斯坦福大学的研究人员发起,于 2009 年推出。ImageNet 是用于物体分类、目标检测、图像分割、姿势估计等多种任务的通用数据集,尤其在深度学习和计算机视觉的突破性研究…...
微信小程序手写签名
微信小程序手写签名组件 该组件基于signature_pad封装,signature_pad本身是web端的插件,此处将插件代码修改为小程序端可用。 signature_pad.js /*!* Signature Pad v5.0.3 | https://github.com/szimek/signature_pad* (c) 2024 Szymon Nowak | Releas…...
Javascript 使用中点查找矩形的角(Find Corners of Rectangle using mid points)
考虑一个矩形 ABCD,我们给出了边 AD 和 BC 中点(分别为 p 和 q)的坐标以及它们的长度 L(AD BC L)。现在给定参数,我们需要打印 4 个点 A、B、C 和 D 的坐标。 例子: 输入:p (1,…...
【困难】 猿人学web第一届 第18题 jsvmp 洞察先机
文章目录 数据接口分析还原加密参数插桩调试分析日志插桩补充 python 代码 数据接口分析 数据接口 https://match.yuanrenxue.cn/match/18data 请求参数 {page: 页码, t: 时间戳, v: 加密值} 请求第一页不需要携带 t, v 参数 cookie 只需要携带 sessionid 只要 还原加密字段…...
IDEA Maven 源修改为国内阿里云镜像的正确方式
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
OpenCV 旋转矩形边界
边界矩形是用最小面积绘制的,所以它也考虑了旋转。使用的函数是**cv.minAreaRect**()。 import cv2 import numpy as npimgcv2.imread(rD:\PythonProject\thunder.jpg) img1cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) print(img.dtype) ret,threshcv2.threshold(img1,1…...
人车防撞系统安全生产方案
根据《市场监管总局关于2021~2023年全国特种设备安全状况的通告》数据显示:2023年:全国共发生特种设备事故和相关事故71起,其中死亡69人。包含叉车在内的场(厂)内专用机动车辆事故29起、死亡28人,占事故总数的40.85%、死亡人数的4…...
开放式耳机哪个牌子好?长文传授6招秘籍,彻底远离坑货!
大家好,作为一位专注于评测各类数码产品的博主,今天我特别推荐开放式耳机作为我们日常的首选。这种耳机以其独特的设计,避免了传统耳机长时间佩戴可能带来的不适和感染风险。开放式耳机佩戴简便且稳固,尤其适合热爱跑步和运动的…...
vue2和vue3双向绑定的原理
Vue.js 的双向绑定是 Vue 框架的核心特性之一,它允许数据和视图之间保持同步。虽然 Vue 2 和 Vue 3 都实现了双向绑定,但它们在实现细节上有所不同。 Vue 2 双向绑定的原理 在 Vue 2 中,双向绑定主要依赖于 Object.defineProperty 和观察者…...
别为大文件烦恼!mp4文件太大怎么变小?3个管用方法
你是否曾经遇到过mp4视频文件过大的困扰?每当想要分享或存储mp4文件时,巨大的文件就成了阻碍。明明感觉感觉没占用多少空间,但是设备却常常出现空间过满警告。 没多少空间的设备真是让人大为恼火,没人想多花一份钱买设备。那么只…...
cocotb的接收和发送逻辑,还是没有弄明白
发送有两种方式 1、定义这样的发 通过前缀连接DUT里面的信号 发送的时候,通过.去访问就可以 2、如果是AXI总线,可以直接调用cocotb的库文件 AXIS总线可以包含以下的信号 通过这个类,可以产生一个AXIS的一帧数据 类的实现大概如下 然后也…...
XXL-JOB调度中心与执行器
XXL-JOB是一个轻量级的分布式任务调度平台,主要由调度中心和执行器两部分组成。下面详细讲解调度中心与执行器的功能和作用。 调度中心 调度中心是XXL-JOB的核心组件,负责任务的调度管理。其主要功能包括: 任务管理:调度中心提供…...
Notepad++ 8.6.9 (代码编辑) 绿色版
Notepad编辑器是一款非常流行的编辑软件,对于技术白菜来说,有这么个神器真是方便多了,Notepad界面简洁明了,而且可以定制界面,又支持多国语言,是站长们的得力助手。免费、开源、绿色,对中文支持…...
AUTOSAR兼容性验证失败?车载C#中控系统代码合规性自查清单,含ISO 26262 ASIL-B级代码审计模板
第一章:AUTOSAR兼容性验证失败的根因诊断与应对策略AUTOSAR兼容性验证失败往往并非单一模块缺陷所致,而是由配置不一致、接口语义偏差、RTE生成逻辑冲突及基础软件(BSW)版本错配等多维度因素交织引发。快速定位根本原因需构建分层…...
nCode后处理实战:5个云图显示问题及快速解决方法(附截图)
nCode后处理实战:5个云图显示问题及快速解决方法(附截图) 刚接触nCode的工程师常常会在后处理阶段遇到各种云图显示问题——全红/全蓝的单调色块、突然出现的NaN警告、无限寿命区域干扰有效数据观察……这些看似简单的可视化问题,…...
stock-sdk-mcp 的实践整理侗
一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...
简易数据采集与分析系统
我用 Trae(SOLO Coder) 自主开发了这款专为硬件工程师打造的数据分析工具,无需懂代码,点点鼠标即可完成采集卡数据全流程分析。核心功能一键导入采集卡原始 ADC 数据,自动适配 12/16 位分辨率,精准转换为真…...
洁净车间PLC数据采集远程监控系统方案
为了维持洁净厂房内的温度、湿度及洁净度等,需要在车间部署多个高精度的温湿度传感器以及监控空气风管的风机、风阀,和监控冷热源管道循环水的压力传感器、电动调节阀等,由PLC控制冷热源机组运行状态,进而为车间洁净度进行自动化管…...
写段代码教会你什么是HOOK技术?HOOK技术能干什么?品
为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实…...
GPLT L3-042 ‘污染大亨’暴力DFS只拿1分?聊聊竞赛中‘优化剪枝’的思维起点与常见误区
从暴力DFS到优化剪枝:竞赛选手的算法思维跃迁指南 在程序设计竞赛中,我们常常会遇到这样的困境:面对一道看似只能暴力解决的题目,提交后却只得到可怜的1分。这就像原文作者在GPLT L3-042"污染大亨"题中的遭遇——一个简…...
别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器颂
为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实的问…...
基于YOLOv5和Python开发的中国交通标志识别系统,可识别45种交通标志,识别率高
基于YOLOv5和Python开发的中国交通标志识别系统,可识别45种交通标志,识别率高 最近在研究交通标志识别,发现了一个基于YOLOv5和Python开发的中国交通标志识别系统,效果相当不错。这个系统可以识别45种交通标志,而且识…...
