/ { 应用名 } / { 环境名 } [ / { 分支名 } ]
/ { 应用名 } - { 环境名 }.yml
/ { 应用名 } - { 环境名 }.properties
/ { 分支名 } / { 应用名 } - { 环境名 }.yml
/ { 分支名 } / { 应用名 } - { 环境名 }.properties
label 分支名 配置文件的分支,默认是master。
application 应用名
profile 环境名 (dev test pro)
## 正常的访问方式
http://localhost:8002/master/mango-admin-dev.yml
http://localhost:8002/mango-eureka/dev/master/
## 如果 spring.cloud.config.server.git.searchPaths:/** 配置时可以使用下面的方式访问配置
http://localhost:8002/mango-admin/mango-admin-dev.yml/master/mango-admin-dev.yml
http://localhost:8002/mango-eureka/mango-eureka/master/mango-eureka-dev.yml
http://localhost:8002/test/test1/master/mango-eureka-dev.yml
spring.cloud.config.server.git.uri:配置git仓库地址
spring.cloud.config.server.git.searchPaths:配置仓库路径
spring.cloud.config.label:配置仓库的分支 (如果是是本地获取的话,则无用)
pring.cloud.config.profile:指定环境 (dev开发环境 test测试环境 prod正式环境)
spring.cloud.config.server.git.username:访问git仓库的用户名
spring.cloud.config.server.git.password:访问git仓库的用户密码
spring.cloud.config.discovery.enabled 是否从配置中心读取文件。(config client中 为true时可以替代spring.cloud.config.server.git.uri)
spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。
server:
port: 9111
spring:
application:
name: config-server
profiles:
## 配置文件在本地
active: native
# 配置中心
cloud:
config:
server:
#本地配置文件的目录
native:
search-locations: D:/workspace/dev/mango/config/
# 此处的label不起作用 (native本地config sever label 不起作用)
label: master
server:
port: 9111
spring:
application:
name: config-server
# 配置中心
cloud:
config:
server:
git:
uri: xxxx
search-paths: mango-*
username: xxxx
password: 123456
repos:
simple: https://github.com/simple/config-repo
special:
pattern: special*/dev*,*special*/dev*
uri: https://github.com/special/config-repo
local:
pattern: local*
uri: file:/home/configsvc/config-repo
# git
label: master
配置多个仓库时,Config Server 在启动时会直接克隆第一个仓库的配置库,其他配置库只有请求时才会clone到本地
configClient配置的uri和discovery方式比较
使用discovery的方式从配置中心获取配置(推荐)
server:
port: 8001
spring:
application:
name: mongo-eureka
profiles:
active: dev
# 配置中心
cloud:
config:
# 应用名 对应 mango-eureka-dev.yml 中的 mango-eureka
name: ${spring.application.name}
# 环境名 对应 mango-eureka-dev.yml 中的 dev
profile: ${spring.profiles.active}
# 从配置中心读取文件 (必须注册到注册中心才能从获取Config配置中心获取配置)
discovery:
enabled: true
# 配置中心的id 对应config sever 的 spring.application.name (使用Eureka注册中心来发现Config配置中心服务)
service-id: config-server
# 对应config sever 的分支 (config sever中的label指的是 远端仓库的分值;此处分支为config sever在项目的的开发分支)
label: master
eureka:
client:
serviceUrl:
defaultZone : http://eureka-node1:7000/eureka/
fetch-registry: true
registry-fetch-interval-seconds: 8
instance:
prefer-ip-address: true
lease-renewal-interval-in-seconds: 4
lease-expiration-duration-in-seconds: 15
使用uri的方式从配置中心获取配置
server:
port: 8001
spring:
application:
name: mongo-eureka
profiles:
active: dev
# 配置中心
cloud:
config:
# 应用名 对应 mango-eureka-dev.yml 中的 mango-eureka
name: ${spring.application.name}
# 环境名 对应 mango-eureka-dev.yml 中的 dev
profile: ${spring.profiles.active}
# config 配置中心的地址
uri: http://config-node1:9111
# 对应config sever 的分支
label: dev
windos 生成 config-server.keystore
# CN 姓氏
# OU 组织单位
# O 组织名称
# L 城市
# ST 省份
# china 国家
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=chrislin, OU=tr, O=organization, L=city, ST=province, C=china" -keypass changeme -keystore server.jks -storepass letmein
java keytool 参数选项:
-alias <alias> 要处理的条目的别名
-keyalg <keyalg> 密钥算法名称
-keysize <keysize> 密钥位大小
-sigalg <sigalg> 签名算法名称
-destalias <destalias> 目标别名
-dname <dname> 唯一判别名
-startdate <startdate> 证书有效期开始日期/时间
-ext <value> X.509 扩展
-validity <valDays> 有效天数
-keypass <arg> 密钥口令
-keystore <keystore> 密钥库名称
-storepass <arg> 密钥库口令
-storetype <storetype> 密钥库类型
-providername <providername> 提供方名称
-providerclass <providerclass> 提供方类名
-providerarg <arg> 提供方参数
-providerpath <pathlist> 提供方类路径
-v 详细输出
-protected 通过受保护的机制的口令
示例:
##
$ keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore e:\yushan.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码)
# 加密解密配置
encrypt:
key-store:
location: classpath:/server.jks #jks文件的路径
password: letmein #storepass
alias: mytestkey #alias
secret: changeme #keypass
完成了JCE的安装后,可以尝试启动配置中心,Spring Cloud 暴露出了几个端点
/encrypt/status:查看加密功能状态的端点
/key:查看密钥的端点
/encrypt:对请求的body内容进行加密的端点
/decrypt:对请求的body内容进行解密的端点
1 如果出现java.security.InvalidKeyException: Illegal key size错误
替换jdk中的C:\Program Files\Java\jdk1.8.0_65\jre\lib\security 目录下的local_policy.jar 和 US_export_policy.jar
(java8地址)下载地址:https://www.oracle.com/java/technologies/javase-jce8-downloads.html
2 如果http://localhost:8002/encrypt 一直失败 (去除 config sever的安全配置 和 config sever中的eureka client配置(如果eureka sever配置了安全认证)
SpringCloud Config Server和Client的配置使用
Spring Cloud构建微服务架构:分布式配置中心(加密解密)
java中Keytool的使用
加解密生成加密密码错误 :java.security.InvalidKeyException: Illegal key size
encrypt 加密后如何使用
微服务:整合 Spring Boot Admin - 开启Security安全认证 Security详细配置
springcloud config配置读取优先级 !!!