Spring Cloud config ------ 认证和安全

xiaoxiao2021-02-28  130

在之前文章基础上添加配置中心服务端的认证及安全,Spring Cloud config ----- 基础使用

项目中使用git来做配置中心的配置仓库,可在application.properties中添加git仓库的用户名和密码,进行身份的认证,配置如下:

spring.cloud.config.server.git.uri=https://github.com/hjbbjh/spring-cloud-learn/ spring.cloud.config.server.git.username=hjbbjh spring.cloud.config.server.git.password=xxxxxx

密码在配置文件中为明文,一般会对配置文件中私密信息进行加密处理,配置中心服务端启动后已经有/encrypt和/decrypt相应的加解密原生端点,可通过这两个接口进行自己的信息进行加解密。

可进行如下两种方式进行:

一 对称加密

bootstrap.properties中,如下配置,配置自己的加密秘钥

encrypt.key=mykey1111111111111111111

启动服务端后,调用/encrypt接口对自己的密码信息进行加密,如下:

得到密文如下:

ba29ca1b0e96756188e24499f16cd4e83c5c00c6cf6f6ea62eea7d167014ebfb

就可以在配置文件中使用:

spring.cloud.config.server.git.password={cipher}ba29ca1b0e96756188e24499f16cd4e83c5c00c6cf6f6ea62eea7d167014ebfb

注意,要以{cipher}开头,服务才可以对此密码进行解密处理。

二 非对称加密

负载JDK的JCE,若不覆盖则会报一些入密文size限制问题等。下载响应SDK版本的JCE后,local_policy.jar,US_export_policy.jar拷贝并覆盖到$JAVA_HOME/jre/lib/security。

$ keytool -genkeypair -alias mytestkey -keyalg RSA \ -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \ -keypass change -keystore server.jks -storepass letmein

使用JDK bin下的keytool工具生成自己的keystore:server.jks,keytool使用方法自行百度。

server.jks放到resource目录。

bootstrap中配置如下:

encrypt.key-store.location=classpath:/server.jks encrypt.key-store.password=letmein encrypt.key-store.alias=mytestkey encrypt.key-store.secret=change同上,调用/encrypt接口对自己的相关信息进行加密,得到密文,配置到配置文件中即可({cipher}开头)

具体代码参考:github

注:git上代码只是参考,一些密码信息需根据自己的信息去生成,所以拿下来直接跑不一定跑的通。

转载请注明原文地址: https://www.6miu.com/read-2627637.html

最新回复(0)