前言
利用spring cloud config对配置文件字段进行加密的,如果出现
代码语言:javascript复制{"description":"No key was installed for encryption service","status":"NO_KEY"}
这样的错。造成这种原因通常有三种。
1、未配置JCE 2、未设置key/keystore 3、spring cloud bug
解决方法
1、配置JCE
JDK6的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
然后解压压缩包,把local_policy.jar和US_export_policy.jar拷贝并覆盖到$JAVA_HOME/jre/lib/security目录下
2、配置key/keystore
配置key
在服务端的配置文件加入
encrypt: key: hello
配置keystore
利用java自带的keytool 生成秘钥
在服务端的配置文件加入
encrypt: keyStore: location: classpath:/hello.keystore # keystroe位置 password: hello # 密钥库的密码 alias: helloKey # 密钥对的别名 secret: hello # 密钥口令
3、spring cloud bug
如果是采用Dalston.SR2、Dalston.SR3版本,则不能进行加密。此时可以降级到
Dalston.SR1版本
加密配置细节
Dalston.SR3版本以后,配置秘钥必须得在bootstrap.yml或者bootstrap.propertiesl文件中配置,而不能在application.yml或者application.propertiesl配置,在application.yml或者application.properties配置没办法生效。如果是采用Dalston.SR1版本都能生效