springcloud配置中心
1.系统环境
jdk:1.8
springcloud: Dalston.SR1
配置中心仓库:github
2.搭建过程
环境拓扑:1个config-server、1个eureka-server、2个hello-service(服务提供者hello-service-dev-1/hello-service-dev-2)、1个feign-consumer
2.1 config-server
2.1.1 项目结构
2.1.2 maven配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.kenick</groupId>
<artifactId>config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config-server</name>
<description>config-server</description>
<properties>
<java.version>1.8</java.version>
<springCloud.version>Dalston.SR1</springCloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${springCloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.1.3 application.properties
spring.application.name=config-server
server.port=6001
# git仓库配置
spring.cloud.config.server.git.uri=https://github.com/kickTec/springCloudDemo/
spring.cloud.config.server.git.search-paths=spring_cloud_in_action/config-repo
spring.cloud.config.server.git.username=******
spring.cloud.config.server.git.password=******
# git仓库密文解密配置
encrypt.key-store.location=classpath:/config-service.jks
encrypt.key-store.alias=configserverkey
# keypass
encrypt.key-store.secret=******
# storepass
encrypt.key-store.password=******
# config安全配置
security.basic.enabled=true
security.user.name=******
security.user.password=******
2.1.4 server.jks
1.去oracle下载JCE无限制权限策略文件
JDK7的下载地址:
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
JDK8的下载地址:
JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download
将local_policy.jar解压后的两个文件,复制到%JDK_HOME%\jre\lib\security目录进行覆盖。
2.使用keytool命令生成证书config-service.jks
生成config-service.jks
keytool -genkeypair -keyalg RSA -alias configserverkey -keypass kenick654123 -dname "CN=Web Server,OU=China,O= www.ymhcnet.com,L=Guangzhou,S=Guangzhou,C=China" -storepass kenick123654 -keysize 4096 -validity 1 -keystore config-service.jks
-keyalg RSA --算法
-alias configserverkey --别名
-keypass kenick123654 --别名密码
-dname "CN=Web Server,OU=China,O= www.ymhcnet.com,L=Guangzhou,S=Guangzhou,C=China" --证书发行者信息
-storepass kenick654123 --获取keystore信息的密码
-keysize 4096 --密钥长度
-keystore config-service.jks --生成证书位置
-validity 1 --有效期,天
3.删除config-service.jks
keytool -delete -alias configserverkey -keystore config-service.jks -storepass kenick654123
4.加密敏感信息
单独启动config-server,通过config-server的内置http接口进行手动加解密(程序将自动解密配置文件中的密文信息),通过postman向配置服务器发送信息加密:
加密接口:http://127.0.0.1:6001/encrypt
解密接口:
解密接口:http://127.0.0.1:6001/ decrypt
2.2 github
在github上新建仓库路径,路径同config-server中的配置保持一致;仓库中存放其它服务的配置信息。
配置文件命名规则:springboot应用名+profile.properties
2.3 eureka使用配置中心
maven依赖:
配置中心关键依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- spring-cloud-starter-config需要 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
增加bootstrap.properties(如果有application.properties不会影响,优先使用bootstrap.properties)。
bootstrap.properties内容:
spring.application.name=eureka-server
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:6001/
spring.cloud.config.label=master
spring.cloud.config.username=******
spring.cloud.config.password=******
测试:先启动config-server,再启动eureka。
在github的配置仓库config-repo文件夹下新建eureka-server-dev.properties文件。
内容如下:
config-server启动日志:
eureka启动日志:
2.4 hello-service-dev-1使用配置中心
maven依赖:
bootstrap配置:
3.参考文献
springcloudconfig-高级配置介绍
https://www.cnblogs.com/leeSmall/p/8878091.html
spring-cloud-config 非对称加密
https://blog.csdn.net/liuxinghao/article/details/78216201
密钥限制更改
https://www.cnblogs.com/lilinzhiyu/p/8024100.html
https://www.cnblogs.com/hellxz/p/9306507.html
文档和工具链接: