说明:SpringCloud系列笔者自学系列,学习来源是周立的博客 http://www.itmuch.com/ 。而此处转载其博客只是为了方便自己以后的学习。
本篇来源 http://www.itmuch.com/spring-cloud/finchley-21/
前文都是将配置明文存储在Git仓库中,但在实际项目中,敏感的配置属性(例如数据库账号、密码等),都应加密存储,从而提高安全性。
Config Server为配置内容的加密与解密提供了支持。
安装JCE
- Java 6 JCE地址:https://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
-
Java 7 JCE地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
-
Java 8 JCE的地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 。
加解密端点
- 加密:
curl $CONFIG_URL/encrypt -d 想要加密的内容
- 解密:
curl $CONFIG_URL/decrypt -d 想要解密的密文
对称加密
-
Config Server的bootstrap.yml中添加:
encrypt: key: foo # 设置对称密钥
密文存储
-
以yaml格式存储:
spring: datasource: username: dbuser password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
-
以properties格式存储:
spring.datasource.username=dbuser spring.datasource.password={cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
测试
-
输入命令
curl http://localhost:8080/encrypt -d mysecret
返回
851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
。说明mysecret
被加密了。 -
输入命令
curl http://localhost:8080/decrypt -d 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
可返回
mysecret
,说明能够正常解密。
非对称加密
-
执行以下命令,并按照提示操作,即可创建一个Key Store。
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass changeme -keystore server.jks -storepass letmein
-
将生成的server.jks文件复制到项目的classpath下。
-
在bootstrap.yml中添加以下内容。
encrypt: keyStore: location: classpath:/server.jks # jks文件的路径 password: letmein # storepass alias: mytestkey # alias secret: changeme # keypass
这样,使用命令
curl http://localhost:8080/encrypt -d mysecret
尝试加密时 ,就会得到类似以下的结果。
AQB38UyNckYzW64rvsaIhy0OV4MUmS7krdHrw+VLUdqXJ4ZVdZL8/ouwSOAYM+6MSjKvzmkaU8Iv2cQ5MWhlZhCrm0f0d2ubc1MH96KBHTix9AroajeTiofPwPoBnWfBo9cC4PU1vD+rcvAvwvdR5q7rYbFc4yut4uJZRzpAXGgf680kAtb6tEtLx7c4/35PEaGXFWd2m8gn21vzWdvhbP6cdC9YlburL0Rq/0H1G+uEX99ZVIWJ0hVn4rplLWPMLUGA2ZVEyVRorIRX/2z5MU7cVPtJ6X1JZDpU4GVz8/3rD5BnbVFTGo6DfBrEzJn58Bzjl6aqo9ca/3j42RHOoQDOHXGqRX/843RbPdvMqTZd0rTOBHTUrVG9E15sCajiLkw=
相对于对称加密,非对称加密的安全性更高,但对称加密相对方便。读者可按照需求,自行选择加密方案。
注意点&坑
encrypt.*
务必存放在bootstrap.*
中,否则加解密特性无法生效!!
配套代码
对称加密
- GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption
- Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption
非对称加密
- GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption-rsa
- Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-config-server-encryption-rsa
相关文章
- Config Server——配置内容的加密与解密
- 跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config
- 跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-Git仓库配置详解
- Config Server——使用Spring Cloud Bus自动刷新配置
- 《Spring Cloud与Docker微服务实战》实体书目录
相关推荐
包含翻译后的API文档:spring-cloud-starter-alibaba-nacos-config-2021.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2021.1; 标签:cloud、...
包含翻译后的API文档:spring-cloud-gateway-server-3.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-gateway-server:3.1.1; 标签:cloud、spring、server、spring...
spring-cloud-starter-alibaba-nacos-config-2.1.0.RELEASE.jar
赠送jar包:spring-cloud-starter-alibaba-nacos-discovery-2021.1.jar; 赠送原API文档:spring-cloud-starter-alibaba-nacos-discovery-2021.1-javadoc.jar; 赠送源代码:spring-cloud-starter-alibaba-nacos-...
包含翻译后的API文档:spring-cloud-starter-alibaba-nacos-config-2021.1-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2021.1; 标签...
赠送jar包:spring-cloud-gateway-server-3.1.1.jar; 赠送原API文档:spring-cloud-gateway-server-3.1.1-javadoc.jar; 赠送源代码:spring-cloud-gateway-server-3.1.1-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:spring-cloud-alibaba-sentinel-datasource-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-sentinel-datasource-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-sentinel-datasource-2021....
包含翻译后的API文档:sentinel-spring-cloud-gateway-adapter-1.8.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.alibaba.csp:sentinel-spring-cloud-gateway-adapter:1.8.0; 标签:spring、cloud、...
赠送jar包:spring-cloud-alibaba-sentinel-gateway-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-sentinel-gateway-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-sentinel-gateway-2021.1-sources...
spring cloud的pom文件,解决maven无法导入依赖的问题,spring-cloud-dependencies-Finchley.SR2.pom文件
包含翻译后的API文档:spring-cloud-gateway-server-3.0.4-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-gateway-server:3.0.4; 标签:springframework、cloud、spring...
包含翻译后的API文档:spring-cloud-commons-3.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-commons:3.1.1; 标签:cloud、spring、springframework、commons、jar...
赠送jar包:spring-cloud-starter-alibaba-sentinel-2021.1.jar; 赠送原API文档:spring-cloud-starter-alibaba-sentinel-2021.1-javadoc.jar; 赠送源代码:spring-cloud-starter-alibaba-sentinel-2021.1-sources...
包含翻译后的API文档:spring-cloud-context-3.1.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework.cloud:spring-cloud-context:3.1.1; 标签:cloud、spring、context、springframework、jar...
在接下来的内容中,我将详细描述标题《Spring Cloud Finchley.SR1-Spring Cloud 手册-Spring Cloud 文档》与《Spring Cloud 2.x手册-Spring Cloud 2.x 文档》以及标签“springCloud spring 微服务”中涉及的知识点。...
Spring Cloud Config 是一个用于微服务配置管理的工具,它支持配置服务器和客户端两种角色。配置服务器作为一个中心化的配置存储,可以是Git仓库或者Subversion,允许开发者在不重启服务的情况下远程更新应用的配置...
赠送jar包:spring-cloud-openfeign-core-3.1.1.jar; 赠送原API文档:spring-cloud-openfeign-core-3.1.1-javadoc.jar; 赠送源代码:spring-cloud-openfeign-core-3.1.1-sources.jar; 赠送Maven依赖信息文件:...
spring-cloud-starter-alibaba-nacos-discovery-2.2.0.RELEASE
赠送jar包:spring-cloud-alibaba-commons-2021.1.jar; 赠送原API文档:spring-cloud-alibaba-commons-2021.1-javadoc.jar; 赠送源代码:spring-cloud-alibaba-commons-2021.1-sources.jar; 赠送Maven依赖信息...
赠送jar包:spring-cloud-starter-alibaba-seata-2021.1.jar; 赠送原API文档:spring-cloud-starter-alibaba-seata-2021.1-javadoc.jar; 赠送源代码:spring-cloud-starter-alibaba-seata-2021.1-sources.jar; ...