Spring Cloud Config生产环境首选RSA非对称加密,公钥加密、私钥仅存服务端,配合{cipher}标记密文、HTTPS传输、Spring Security访问控制及密钥动态注入,实现端到端安全防护。

Java 微服务架构中,配置中心(如 Spring Cloud Config)必须对敏感配置(数据库密码、API 密钥等)进行加密与访问控制,否则极易成为整个系统的安全突破口。核心不是“要不要加密”,而是“怎么加得可靠、管得住、用得稳”。
非对称加密是生产环境的首选方案
相比对称加密(如 encrypt.key=xxx),RSA 非对称加密能更好隔离密钥生命周期:
- 公钥可安全分发给客户端或 CI/CD 工具,用于加密配置值;私钥只保留在 Config Server 端,不外泄
- 支持密钥轮换:只需更新密钥库(.jks),无需批量重刷所有已加密配置
- 生成方式简单:用 JDK 自带 keytool 命令即可创建密钥对,例如:
keytool -genkeypair -alias config-server -keyalg RSA -keystore config-server.jks -storepass 123456 -keypass 123456 - Config Server 配置示例(bootstrap.yml):
encrypt:
key-store:
location: classpath:/config-server.jks
alias: config-server
password: 123456
secret: 123456
密文必须规范标记且端到端受控
仅加密不等于安全——格式、传输、存储每个环节都可能出漏洞:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 所有加密值必须以 {cipher} 开头,例如:
spring.datasource.password: '{cipher}AQBFywM+SuemUIS18U8wXrw96hxmhq26u4UUKCxQ1jLTLEcT7MEldJ9C7H4USE+bxVIlHernOewcfWQBg8SwSqK9MuLr07Z1bTEwPEu8KfbEMKTXJBaK6OOVLPFKjaUS/ezHKlke1DYjPpxuo9QO5GOTXIGZOBIlcclJbBCAc2/JIEK34Na/vJdbmSVtNdo6qLw1ufDNPES5q7pweWrnaP4vmtzV8JSs7+UAOV4caf8Zxrv7Sp6KuxuRlEn2yNPoi9bzf4pBWoqxZ5cUsEkzMb5ZEEkmqXCXT4o6+AWdantXbzUXCVculh0FGHvJnnvzsDjoKnVJm0JULjNa5yWNik42tdqsj4KlW76XWcBNv4ditrNsYz13IhZpwsZGHtqTZ97AwobvaTY/UrV1We5ssx3O' - Config Server 的 /encrypt 和 /decrypt 接口默认开放,必须关闭或加认证——否则攻击者可直接调用解密任意密文
- Git 仓库中存放的配置文件本身也应设为私有,禁止公开仓库托管含 {cipher} 的配置
传输与存储层必须补上基础防护
加密只是其中一环,明文在链路中暴露同样致命:
立即学习“Java免费学习笔记(深入)”;
- 强制启用 HTTPS:Config Server 对外提供服务时必须使用 TLS,避免密文在传输中被中间人截获并重放
- 敏感配置进 Secret,非敏感进 ConfigMap:若部署在 Kubernetes 中,{cipher} 字符串本身虽已加密,仍建议通过 Secret 资源注入 Config Server 容器,而非环境变量或普通配置文件
- 密钥不硬编码:.jks 文件密码、密钥别名密码等不要写死在配置中,应通过启动参数、K8s Secret 或 HashiCorp Vault 动态注入
- 禁用未授权访问:为 Config Server 添加 Spring Security,限制 /encrypt*、/decrypt*、/actuator/* 等管理端点仅允许内部运维 IP 或 OAuth2 认证后访问
更进一步:对接专业密钥管理系统
当系统规模扩大、合规要求提高(如等保三级、GDPR),单靠本地密钥库难以满足审计与轮换需求:
- 将密钥托管至云厂商 KMS(如 AWS KMS、阿里云 KMS)或开源 Vault,Config Server 启动时动态获取解密密钥
- 利用 Vault 的策略引擎实现细粒度权限控制,例如:“dev 环境只能解密 dev 配置,prod 密钥仅限 SRE 组访问”
- 结合 Spring Cloud Config 的 Composite Environment Repository,让 Git 存非敏感项,Vault 存密钥类敏感项,天然解耦

















