讲师中心 微信公众号
AI工具推荐 视频效率加速

Spring Boot 3环境下如何为Redis配置SSL加密传输连接?

轻静吖_4689

轻静吖_4689

发布时间:2026-10-22 06:50:32

|

796人浏览过

|

来源于php中文网

原创

Spring Boot 3 不支持通过 application.yml 或 properties 配置 Redis SSL 证书,因 RedisProperties 不解析 keystore 等字段;必须用 Java Config 显式构建 SslOptions 并注入 LettuceConnectionFactory,否则 TLS 握手失败。

spring boot 3环境下如何为redis配置ssl加密传输连接?

Spring Boot 3 默认不支持通过 application.yml 或 application.properties 配置 Redis 的 SSL 证书路径和密码——哪怕你写了 spring.redis.ssl.keystore,它也会被完全忽略,连接必然失败。

为什么 spring.redis.ssl.enabled=true 不够用

这个配置只告诉 Lettuce “走 TLS 协议”,但不提供任何证书材料。JVM 无法完成 SSL 握手,启动时看似成功,实际首次执行命令就会抛出 javax.net.ssl.SSLHandshakeException,典型报错包括:

  • No name matching redis.example.com found(主机名验证失败)
  • PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException(信任链不可信)

根本原因是:Spring Boot 的 RedisProperties 类压根不解析 keystore、truststore、key-password 等字段,它们不属于 Spring Boot 官方映射的配置项。

必须用 Java Config 构造 SslOptions 并注入 LettuceConnectionFactory

这是唯一可靠的方式。Lettuce 6.3+(Spring Boot 3 默认)要求显式构建 SslOptions,再传给 LettuceConnectionFactory。关键点:

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载
  • keystore 和 truststore 必须是 java.io.File 实例,不能用 classpath 路径字符串(如 classpath:redis-keystore.jks)
  • 密码不能硬编码在代码里,应从环境变量或 @ConfigurationProperties 注入
  • 端口必须匹配 Redis 服务端开启 TLS 的端口(常见为 6380,不是默认的 6379)
  • 若服务端启用 SNI 或自定义主机名验证,需额外调用 .hostnameVerifier(...)

最小可行示例(JDK 17+,Spring Boot 3.3+):

@Bean
public RedisConnectionFactory redisConnectionFactory() {
    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
    config.setHostName("redis.example.com");
    config.setPort(6380);
    config.setPassword(RedisPassword.of(System.getenv("REDIS_PASSWORD")));

    SslOptions sslOptions = SslOptions.builder()
        .keystore(new File("/etc/ssl/redis-keystore.jks"))
        .keystorePassword(System.getenv("KEYSTORE_PASSWORD"))
        .truststore(new File("/etc/ssl/redis-truststore.jks"))
        .truststorePassword(System.getenv("TRUSTSTORE_PASSWORD"))
        .build();

    LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
        .useSsl(sslOptions)
        .commandTimeout(Duration.ofSeconds(3))
        .build();

    return new LettuceConnectionFactory(config, clientConfig);
}

常见踩坑点:文件路径、权限与 JVM 参数

即使代码写对,仍可能因环境问题失败:

  • FileNotFoundException:路径写错,或应用运行用户(如 springboot 用户)无权读取 .jks 文件(Linux 下注意 chmod 400 + chown)
  • 证书过期或域名不匹配:用 keytool -printcert -file redis.crt 检查有效期和 Subject CN= 是否匹配连接地址
  • JVM 默认不信任自签名 CA:如果 redis-truststore.jks 是自建 CA 签发的,必须确保它包含该 CA 的根证书;否则要加 JVM 参数 -Djavax.net.ssl.trustStore=...(不推荐,会污染全局 SSL 上下文)
  • Lettuce 连接池未启用 SSL:忘记在 LettuceClientConfiguration.builder() 中调用 .useSsl(...),会导致连接复用时走明文通道

最易被忽略的是:SSL 配置和连接池配置是两个独立环节,SslOptions 必须通过 LettuceClientConfiguration 显式绑定,而不是塞进 RedisStandaloneConfiguration ——后者只管地址密码,不管加密。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2611

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

477

2026.01.26

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4549

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4115

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

7672

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

643

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

756

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

7622

2024.04.07

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn