一、准备工作(安装JCE)
首先打开你的jdk安装目录,jdk8的目录有两种情况:
1、如下(目前是jdk/jre/lib/security目录下)
这种情况我们只需要在java.policy中更改配置:
crypto.policy=unlimited前面的注释放开即可 ,因为这些版本的jdk已经下载好了不同情况下所需要的jar包,在policy文件夹下面
2、如果security文件夹下有local_policy.jar和US_export_policy.jar这两个jar包,那么我们就必须去官网下载JCE进行安装
JCE6
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JCE7
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JCE8
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压
将这两个jar包复制在security文件夹下并且覆盖掉原有文件即可。
二、对称加密
1、首先在bootstrap.yml中添加配置
encrypt:
key: didispace
2、get请求访问端点
如果是如图示错误,
报这种错有三种可能:
(1)jce环境配置错误,根据之前的准备照做即可
(2)没有添加上述配置
(3)配置没有放在bootstrap.yml中去,放在了application.yml里
正常样式为:
3、取得加密后字段
4、放置到github中
我将它放在了git@github.com:wangchunself/ymlforconfig.git这个库下的application.properties中去
这块是有区别的:
.properties的文件中这么写:profile = {cipher}a172a0ac98bcc944cf4256cc42767be5280ab96a59b245fcc4e6485e488c77a4
.yml的文件中这么写:profile : '{cipher}a172a0ac98bcc944cf4256cc42767be5280ab96a59b245fcc4e6485e488c77a4'
5、访问http://localhost:8080/master/application-default.yml 得:
所以,Config-Server会自动将加密的东西进行解密
二、非对称加密
1、创建keystore
这是linux版
keytool -genkeypair -alias mytestkey -keyalg RSA \
-dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
-keypass changeme -keystore server.jks -storepass letmein
这是windows版
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass changeme -keystore server.jks -storepass letmein
运行完成之后会在当前运行命令行的目录下生成一个server.jks文件
2、配置项目配置文件(必须配置在bootstrap中,不能再application.yml中)
这些属性都是根据上面的命令对应下来的
encrypt:
keyStore:
location: classpath:/server.jks
password: letmein
alias: mytestkey
secret: changeme
3、将第一步生成的server.jks放在项目的classpath下面
4、之后的项目加解密过程和对称加密一致