springcloud_config教程(4)--更高级的配置加密与安全

    目前的加密还不够严格,比如说配置文件中保存有git的密码、对称加密的key 和 明文的security.user.password /spring.cloud.config.password,需要针对这三个部分进行需要进行改造。本文的基础是上一篇,已经配置好了无限长度的JCE。

     一.SSH方式登录GIT

    之前的config-server中,配置了git的用户名和密码,有泄漏密码的风险,可以采用密钥的方式登录git获取配置,便无需在配置文件中配置git的用户名和密码。

    1. config-server的配置文件中,去掉spring.cloud.config.server.git.username和spring.cloud.config.server.git.password。

    2. 将config-server所在机器的ssh公钥添加到到git仓库。

    3. spring-cloud-config使用ssh方式连接git的要求是,.ssh/known_hosts中的hostkey需要是ssh-rsa格式的,其他格式则不行(如ecdsa-sha2-nistp256),如下图:

    至此,解决了配置文件中暴露git用户名密码的问题。

    二. 使用非对称加密

    之前使用的是对称加密,在配置文件中配置encrypt.key,缺点是安全性不如非对称加密。

    1.使用命令行工具,如config--server项目中使用git bash,在其中输入:

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

    此时会在config-server项目中根目录产生一个server.jks文件,保存的是非对称加密的密钥,打开后是乱码。

    2.将server.jks文件放入config-server项目的classpath下,在config-server项目中新建 bootstrap.yml,注意,必须是这个文件名。在其中配置如下,其中的值与生成时的命令行对应:

#非对称加密
encrypt:
 keyStore:
 location: classpath:/server.jks
    password: letmein
    alias: mytestkey
    secret: changeme

    3. 此时,启动config-server工程,依旧可以使用/encrypt和/decrypt接口进行属性的加密和解密,不过和对称加密的相比,密文长度更长,也更安全。同时,之前对称加密的密文,无法解密:

    至此,解决了暴露加密的key的问题。

    三. 加密security.user.password 和 spring.cloud.config.password

    之前的项目中,config-server中配置security.user.password ,通过web查看配置时需要输入此密码;config-client中配置spring.cloud.config.password,才能从config-server中获取配置。直接将明文写在工程中不是很安全,现在将其加密,加密分为对称和非对称加密。

    1. 首先启动config-server,然后调用/decrypt接口,将希望设定的密码进行加密。

    2. 将加密后的密文,连接上前缀{cipher},设定在config-server和config-client中:

    3.如果是对称加密,在config-server和config-client的bootstrap.yml中,配置相同的encrypt.key.

      如果是非对称加密,则在config-server和config-client的classpath下放置相同的前文中生成的server.jks文件,然后在二者的bootstrap.yml中配置:

encrypt:
 keyStore:
 location: classpath:/server.jks
    password: letmein
    alias: mytestkey
    secret: changeme

    4.启动config-server和config-client,一切正常:

    至此,解决了暴露security.user.password 和 spring.cloud.config.password的问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值