config配置中心的配置加解密
这次内容接着上次内容来写的:
首先提出疑问:比如在项目中非常隐私的东西也是非常关键的东西,
向数据源的username和password,以及服务器的地址,端口号不能以明文的方式放到git上面去的,需要加密起来。
1、在SpringCloud中有两种加密:对称加密,非对称加密
对称加密是可以解密的:有一个密钥来进行加解密:这就叫做对称加密算法:共用的是一个密钥,密钥就是同一把钥匙。
1.1、对称加密:<参考 SpringCloud官网>>
第一步:安装jce:jdk所提供的一种加密的测略。下载java 8JCE的就可以了。
第二步:把jce中的两个策略文件覆盖到jdk/jre/lib/security目录下面:
如何去实现加减密呢?
主要针对的是cloud-config来进行加解密。
2、重启config:看控制台在这里有加密和解密 encrypt/decrypt相应的路径,访问下:
在这里需要加一个对称加密的key,如果把这个key放到了application.yml文件中的话,还会报上面的错误,所以放到了bootstrap.yml文件中,这里是优先级的关系。可能在run运行的时候没有初始化这个配置的key,所以放到了bootstrap文件中。
然后重新访问下,有这个地址/encrypt,就可以进行加密这就可以进行加解密了。
比如对root加密,-d:是写入的密码,如下:
那么如何去使用这个加密后的结果呢?用"{cipher}加密的结果"
在解密的时候用的是cipher它来解密的。‘这就是在有密钥的时候解密成root。然后推送,推送完这里就有对应的刷新,然后看config的后台:
然后这时用配置中心的客户端去访问下:
总结:上面的就是对称的加解密的情况:用的是对称加密的算法
3、非对称加密:它有公钥,和私钥之分。非对称怎么实现:加密起来更复杂
其实用的是keytool这个工具来实现的,就是一个非对称加密的工具。参照SpringCloud官网非对称加密:
步骤如下:
3.1、通过keytool工具来进行加密,官网有一些参数,这里主要是用的RSA算法
3.2、然后生成一个server.jks的文件。
3.3、把这个文件拷贝到当前的config的resources的根目录的下面。
接下来配置config:
password,alias,secret不是写死的,在上面的步骤也可以自己去实现。
3.4、启动下config,用法都一样,也是用/encrypt来加密,然后对root进行加密和解密。
3.5、在git上如何去使用呢,步骤如下:
然后,用配置中心的客户端cloud-provider去访问:访问也是成功的。
总结:非对称加密必须有server.jks和相应的配置才可以,用的是RSA算法。要不也不能解密和加密,这个比较安全。而对称加密是使用同一个密钥,才可以加解密。