您的位置:首页 > 其它

通过加密算法,对配置中心的敏感数据进行加密

2020-06-05 06:48 162 查看

===========采用对称加密算法加密============

对称加密是最简单,最快速的一种加密方式,加密和解密是用同样的密钥。

检查加密环境:[ip]:[port]/encrypt/status(ip和port即为所启动的服务的ip和port)

如果显示{"description":"No key was installed for encryption service","status":"NO_KEY"}

则提示没有为加密服务安装密钥,这种情况下就需要配置加密环境:

1.在配置文件中设置密钥: encrypt.key=wang

2.配置jce:

      1)http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

            下载jar包并解压,把jar文件上传到需要安装jce的计算机上的JDK或JRE的security目录下,覆盖原文件即可。

             JDK:将两个jar文件梵高%JDK_HOME%\jre\lib\security下(默认的jdk不支持jce)

            JRE:将两个jar文件放到lib/security目录下

3.spring cloud的一个bug

        Dalston SR4,SR3,SR2均不能配置加密,需要调整到Dalston SR1

4.进行加密

        加密(post请求)     [ip]:[port]/encrypt

        解密(post请求)     [ip]:[port]/decrypt

tips:要将加密后的密文放在配置文件中并且在字串前面加上{cipher},相当于告诉spring cloud需要解密。

----------------------------------------------------------------------------------------------------------------------

===========使用非对称算法,实现敏感数据加密================

java使用keytool来做非对称加密

keytool是一个java数据证书的管理工具,keytool将密钥和证书存储在一个keystore文件中。

keystore文件包含两种数据:密钥实体-密钥(私钥)和配对公钥

生成keystore文件的命令

keytool -genkeypair -alias "config-info" -keyalg "RSA" -keystore "encrypt-info.keystore"

alias指定密钥对的别名,该别名是公开的,encrypt-info.keystore表示keystore文件的路径

步骤:

1.通过keytool命令生成keytools文件,将其放在resource目录下

2.在配置文件中配置keystore的文件信息

#keystore文件路径

encrypt.key-store.location=encrypt-info.keystore

#alias指定密钥的别名,该别名是公开的

encrypt.key-store.alias=config-info

#storepass密钥仓库

encrypt.key-store.password=wang123

#keypass用来保护所生成的密钥对中的私钥

encrypt.key-store.secret=wang456

3.模拟HTTP的post请求,ip:port/encrypt,生成加密之后的字串

4.将加密后的字符串放在配置文件中,加{cipher}前缀

-----------------------------------------------------------------------------------

                                                                                    配置中心的用户安全认证

通过配置中心服务端的ip和端口可以直接通过ie访问配置中的信息,而且是直接解密之后的明文,所以需要添加用户安全认证,使用spring security。

步骤:

1.在配置中心的服务端加入spring-security包

2.在服务端的配置文件中加入:

#开启基于http basic的安全认证

security.basic.enabled=true

security.user.name=user

security.user.password=123456

3.由于服务端配置了用户名和密码,所以在客户端也需要加入用户名和密码(为客户端服务加权限)

   在客户端的配置文件中加入

   spring.cloud.config.username=user

   spring.cloud.config.password=123456

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐