spring cloud config server的编写及配置内容的加解密
版本信息
spring-boot-starter-parent 2.4.0
spring-cloud-config-server 3.0.3
spring-cloud-starter-bootstrap 3.0.3
编写spring cloud config server
- 创建一个远程仓库,例如:https://github.com/Darcy-Hu/spring-cloud-config.git,在仓库中创建几个配置文件:
内容分别为:demo.properties demo-dev.properties
profile: default-1.0 profile: dev-1.0
- 创建一个maven工程springcloud-config-server,并添加依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> <version>3.0.3</version> </dependency>
- 在启动类上添加@EnableConfigServer,声明这是一个config server。
package com.example.spring.cloud.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; @EnableConfigServer @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
- 编写配置文件application.yml
server:
port: 8081
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/Darcy-Hu/spring-cloud-config.git #Git仓库的地址
username: assdwe #Git仓库的账号
password: 123456 #Git仓库的密码
- 端点与配置文件映射规则:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.yml
/{label}/{application}-{profile}.properties
{application}表示微服务的名称(我这里理解为文件名称),{label}对应Git仓库的分支,默认为master - 测试结果
启动项目springcloud-config-server,分别输入:
http://localhost:8081/demo/dev
http://localhost:8081/demo/dev/main
结果如下图所示:
配置内容的加解密
加密内容需要以【’{cipher}+密文的形式存储’】,例如 ‘{cipher}AQAzvD3sDd1s+m/LOpK21qogn7VsY+7q+rAqI7DbH7aL0NN0Zxf0AmGgZOBAvMYq5GVU1qpsUv786ztdQCRy2quCnu2Nstb7jvJWdxYYBrqBE1G4CKmKP1Tp0IiIJ9wL8lWMBq69QOvyem+vxF4YNOKbRqKwbgHgdVgeIh+AaiSh+FR26y4puU4SVklrPFpYI66Km1RnkFI0oy9w6z1InrKQQKGObDvtMFIifcu5ZSA322I45SoPlBLeb7Wew0g9wV0AGqK+nHsAQlyJXxAAkcq6mJ/OZ+SWrzrxiN+yjvBKcuSD7lRbKImohS7IlfHI1CkY7BCMDZKYrADdUl5bh4ncBV7wi/ht3HM6rRE1wphYUfS1yz4a33aH8FgKaY+WVsU=’
1. 环境准备: 安装Java Cryptography Extension(JCE)
首先打开你的jdk安装目录(…/jre/lib/security),jdk8的目录有两种情况:
a. 这种情况下,只需要将java.security中的crypto.policy=unlimited前面的注释放开即可
b. 如果security文件夹下有local_policy.jar和US_export_policy.jar这两个jar包,我们需要去官网下载JCE,下载地址: JCE8:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
解压后,将获取的local_policy.jar和US_export_policy.jar这两个jar包,复制到security文件夹下替换掉即可。
2. 对称加密
a. 创建bootstrap.yml文件,添加如下内容:
encrypt:
key: qyswccsd
b. 测试结果
http://localhost:8081/encrypt/status 返回ok即可
取得加密后的字段:
3. 非对称加密
a. 执行以下命令(windows环境下,可打开cmd执行),创建一个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下
b. 在bootstrp.yml中添加以下内容
encrypt:
keyStore:
location: classpath:/server.jks
password: letmein
alias: mytestkey
secret: changeme
取得如下结果:
可能出现的问题及解决方案
参考链接:https://blog.csdn.net/qq_40260565/article/details/119966512