springcloud_config教程(3)--配置加密与安全

x33g5p2x  于2021-12-20 转载在 其他  
字(1.2k)|赞(0)|评价(0)|浏览(244)

  之前的工程存在两个问题:

  1)可以随意通过url获取到config-server的内容,不安全。

  2)配置文件保存在git中,配置中的敏感信息有泄漏风险;

  本文的目的就是解决以上两个问题,使用的工程是上一篇的工程。

  一.使用spring-security来限制通过url获取配置内容。

  1.在config-server工程中增加依赖:

|

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

|

  2.在config-server工程的配置文件中,增加:

|

security.user.name=xx
security.user.password=123456

|

  3.此时通过url获取配置信息,会出现如下界面:

  输入上一步设置的用户名和密码后才能获取到,否则页面会报404。在输入了正确的用户名密码后,浏览器会返回一个Authorization的头信息,之后的请求会带上这个头信息,表示已登录,清除缓存后需要再次登录。

  至此,解决了第一个问题。

  二.对配置文件的敏感信息加密

  1.下载一个不限长度的JCE,百度即可。我的是jdk1.7,下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

  2.将下载后的文件解压,得到:

  将两个jar包放入 JAVA_HOME/jre/lib/secerity下,覆盖同名文件。

  3.在config-server工程的配置文件中,增加配置:

|

#加密密钥
encrypt.key=key1

|

  4.使用postman等工具,用post方式请求http://localhost:9999/encrypt接口,参数类型选择raw(如果名文中含有特殊字符,则还需要将text这里选择为 plain/text ),输入要加密的明文,得到的结果就是加密后的密文:

  用post方式请求http://localhost:9999/decrypt接口,参数类型选择raw,输入密文,得到的结果就是解密后的明文:

  使用的时候,将密文配置到git中,但是需要一个{cipher}前缀:

  此时,在git中查看是密文,通过url和config-client中获取到的就是明文:

  注意:如果配置了第一步的spring-security,那么在操作decrypt 和 encrypt接口的时候,需要携带Authorization头信息,值可以通过url方式登录后刷新页面查看请求头。

  至此,解决了第二个问题。

相关文章