Spring cloud conf 配置中心 加密和解密(对称加解密和非对称加解密)

前言

在使用Spring Cloud Config的加密解密功能时,有一个必要的前提需要我们注意。为了启用该功能,我们需要在配置中心的运行环境中安装不限长度的JCE版本(Unlimited Strength Java Cryptography Extension)。虽然,JCE功能在JRE中自带,但是默认使用的是有长度限制的版本。我们可以从Oracle的官方网站中下载到它,它是一个压缩包,解压后可以看到下面三个文件:
jdk8对应的下载链接:jdk8的jce下载地址,然后放在jdk的jre的security目录下即可。

可以尝试用postman或者浏览器通过GET请求访 http://localhost:8000/encrypt/status 端点,我们将得到如下内容:

{
    "description": "The encryption algorithm is not strong enough",
    "status": "INVALID"
}

该返回说明当前配置中心的加密功能还不能使用,因为没有为加密服务配置对应的密钥。

对称加解密

bootstrap.yml配置:

encrypt:
  key: xiefei

加入上述配置信息后,重启配置中心,再访问 http://localhost:8000/encrypt/status 端点,我们将得到如下内容:

{
    "status": "OK"
}

此时,我们配置中心的加密解密功能就已经可以使用了

我们可以用/encrypt端点加密/decrypt端点解密,注意,这两个端点都是POST请求:

加密:

解密:

使用:

在yml文件中,必须以英文半角单引号括起来加密值,前面加{cipher}

server:
  port: '{cipher}132ee3fe0253b1164081c8acb0d7c851952f0a4194815de0e3227a459793e0b1'

在properties文件中, 不要加引号

port={cipher}132ee3fe0253b1164081c8acb0d7c851952f0a4194815de0e3227a459793e0b1

我们通过配置encrypt.key参数来指定密钥的实现方式采用了对称性加密。这种方式实现比较简单,只需要配置一个参数即可。

非对称加解密

1.使用keytool生产证书

keytool -genkeypair 命令帮助

  -alias <alias>                  要处理的条目的别名
  -keyalg <keyalg>                密钥算法名称
  -keysize <keysize>              密钥位大小
  -sigalg <sigalg>                签名算法名称
  -destalias <destalias>          目标别名
  -dname <dname>                  唯一判别名
  -startdate <startdate>          证书有效期开始日期/时间
  -ext <value>                    X.509 扩展
  -validity <valDays>             有效天数
  -keypass <arg>                  密钥口令
  -keystore <keystore>            密钥库名称
  -storepass <arg>                密钥库口令
  -storetype <storetype>          密钥库类型
  -providername <providername>    提供方名称
  -providerclass <providerclass>  提供方类名
  -providerarg <arg>              提供方参数
  -providerpath <pathlist>        提供方类路径
  -v                              详细输出
  -protected                      通过受保护的机制的口令

2.使用keytool生成证书

keytool -genkeypair -alias testkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass secret1 -keystore server.jks -storepass password1

3.将生产的证书server.jks 放到resource下

4.在server端的bootstrap.xml添加配置

#非对称加密
encrypt:
  key-store:
    location: classpath:/server.jks
    password: password1 #生成时填写的
    alias: testkey  #生成时填写的
    secret: secret1 #生成时填写的

5.配置文件中配置信息加密,同对称加密的配置方式一致

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值