使用前提
在使用Spring Cloud Config的加密解密功能时,有一个必要的前提需要我们注意。为了启用该功能,我们需要在配置中心的运行环境中安装不限长度的JCE版本(Unlimited Strength Java Cryptography Extension)。虽然,JCE功能在JRE中自带,但是默认使用的是有长度限制的版本。我们可以从Oracle的官方网站中下载到它,它是一个压缩包,解压后可以看到下面三个文件:
jdk8对应的下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
注意下载和自己jdk一致的版本
README.txt
local_policy.jar
US_export_policy.jar
我们需要将local_policy.jar和US_export_policy.jar两个文件复制到C:\Program Files\Java\jdk1.8.0_181\jre\lib\security(也就是本地jdk的安装目录)目录下,覆盖原来的默认内容。到这里,加密解密的准备工作就完成了。
可以尝试用postman或者浏览器通过GET请求访 http://localhost:8000/encrypt/status 端点,我们将得到如下内容:
{
"description": "No key was installed for encryption service",
"status": "NO_KEY"
}
该返回说明当前配置中心的加密功能还不能使用,因为没有为加密服务配置对应的密钥。
我们可以通过在s服务端的resources目录下新建一个bootstrap.properties文件,文件内容如下:
encrypt.key=kye
加入上述配置信息后,重启配置中心,再访问 http://localhost:8000/encrypt/status 端点,我们将得到如下内容:
{
"status": "OK"
}
此时,我们配置中心的加密解密功能就已经可以使用了,不妨尝试访问一下/encrypt和/decrypt端点来进行加密和解密的功能。注意,这两个端点都是POST请求:
例如:
用postman进行post请求访问如下链接:localhost:8000/encrypt
body里填写需要加密的字符串:0&13MHCWT6U3L1j^EriRuHiZSxA*6BNs
返回结果里会有加密后的字符串:9cc84423f6d857a3a45b9dfa86ca3db788031bbb95237e9ec253d4bfd4a22a4bfecad3e307076c8c127321c5d975efff3c50965e8c4e1a821af20ebe025f2d87
用postman进行post请求访问如下链接:localhost:8000/decrypt
body里填写需要加密的字符串:9cc84423f6d857a3a45b9dfa86ca3db788031bbb95237e9ec253d4bfd4a22a4bfecad3e307076c8c127321c5d975efff3c50965e8c4e1a821af20ebe025f2d87
返回结果里会有加密后的字符串:0&13MHCWT6U3L1j^EriRuHiZSxA*6BNs
这里,我们通过配置encrypt.key参数来指定密钥的实现方式采用了对称性加密。这种方式实现比较简单,只需要配置一个参数即可。