Spring Boot 配置文件密码加密操作文档
1. 为什么需要对配置文件中的密码进行加密
- 安全防护:避免敏感信息(数据库密码、Redis密码等)以明文形式存储在配置文件中
- 合规要求:满足企业安全规范和行业标准要求
- 防止泄露:当配置文件意外暴露时,降低安全风险
- 权限控制:即使代码被访问,没有解密密钥也无法获取真实密码
2. 技术实现方案
2.1 使用 jasypt-spring-boot-starter 依赖
项目集成 jasypt-spring-boot-starter 依赖来实现配置文件加密功能。
2.2 版本兼容性注意事项
- 需要确保
jasypt-spring-boot-starter版本与当前Spring Boot版本兼容 - 建议查看
pom.xml文件确认具体版本号
3. 配置步骤
3.1 添加加密配置
在配置文件中添加以下配置项:
yaml
jasypt:
encryptor:
password: ${JASYPT_ENCRYPTOR_PASSWORD}
3.2 设置环境变量
需要在运行环境中设置 JASYPT_ENCRYPTOR_PASSWORD 环境变量,该值将作为加密解密的密钥。
4. 密码加密操作流程
4.1 使用测试接口生成加密密文
项目中已提供测试接口 JasyptTestController,可通过以下方式获取加密结果:
java
@Slf4j
@Controller
@RequestMapping(value = "/test")
public class JasyptTestController {
@Autowired
private StringEncryptor encryptor;
@RequestMapping(value = "pd")
@ResponseBody
public String pd(String content) {
try {
return encryptor.encrypt(content);
} catch (Exception e) {
log.error("加密异常", e);
return "加密异常";
}
}
}
bash
curl -X GET "http://localhost:8081/test/pd?content=your_password_here"
4.2 替换配置文件中的明文密码
将返回的加密结果包装在 ENC() 函数中,替换原明文密码:
yaml
# 加密前
password: mysecretpassword
# 加密后
password: ENC(加密结果)
5. 测试验证
5.1 功能测试
- 启动应用时检查是否正常连接数据库、Redis等依赖服务
- 验证各业务功能是否正常运行
- 查看日志确认无解密错误
5.2 加密测试示例
bash
# 加密数据库密码
curl "http://localhost:8081/test/pd?content=123456"
# 加密Redis密码
curl "http://localhost:8081/test/pd?content=123456"
# 加密Druid监控密码
curl "http://localhost:8081/test/pd?content=111111"
5.3 验证点
- 应用启动无异常
- 数据库连接正常
- Redis连接正常
- Druid监控页面可正常访问