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

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

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

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

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

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

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


   org.springframework.boot
   spring-boot-starter-security

    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方式登录后刷新页面查看请求头。

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

 

 

你可能感兴趣的:(springcloud_config教程(3)--配置加密与安全)