SpringCloud系列之Config配置中心

database

  1|0配置中心加解密

  考虑这样一个问题:所有的配置文件都存储在 Git 远程仓库,配置文件中的一些信息又是比较敏感的。所以,我们需要对这些敏感信息进行加密处理。主要的加密方法分为两种:一种是共享密钥加密(对称密钥加密),一种是公开密钥加密(非对称密钥加密)。

  1|1对称加解密 Symmetric encryption

  对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。

  检查加密环境

  点击链接观看:检查加密环境视频(获取更多请关注公众号「哈喽沃德先生」)

  版本问题

  访问 Config Server:http://localhost:8888/encrypt/status

  检查结果如果是:{"description":"No key was installed for encryption service","status":"NO_KEY"} 说明没有为加密服务安装密钥,也说明你使用的是较低的 JDK 版本。

  比较简单的解决办法:更换高版本 JDK,比如使用最新版的 LTS 版本 JDK-11.0.6。

  复杂的解决办法:从 Oracle 官网下载对应 JCE,下载链接:https://www.oracle.com/java/technologies/javase-jce-all-downloads.html

  下图红色框中内容已经足够说明原因:JDK 9 以及更高版本已附带策略文件,并在默认情况下启用。

  如果你的当前环境必须使用低版本 JDK,那么请下载对应 JCE 压缩包,下载解压后把 local_policy.jar 和 US_export_policy.jar 文件安装到需要安装 JCE 机器上的 JDK 或 JRE 的 security 目录下即可。

  

 

  配置问题

  检查结果如果是:{"description":"The encryption algorithm is not span enough","status":"INVALID"} 说明服务端未配置加密。

  

 

  Config Server 创建配置文件,注意必须叫 bootstrap.yml,配置密钥信息即可。

  # 密钥

  encrypt:

  key: example

  重启 Config Server 访问:http://localhost:8888/encrypt/status 结果如下:

  

 

  加解密演示

  点击链接观看:对称加解密视频(获取更多请关注公众号「哈喽沃德先生」)

  配置中心服务端

  使用 curl 命令访问 /encrypt 端点对属性值 root 进行加密。反向操作 /decrypt 可解密。

  curl http://localhost:8888/encrypt -d root

  加密结果:bfb5cf8d7cab63e4b770b76d4e96c3a57d40f7c9df13612cb3134e2f7ed26123

  

 

  解密

  

 

  Git 仓库

  把加密后的数据更新到 Git 远程仓库的配置文件中。值得注意的是需要在加密结果前添加 {cipher} 串,如果远程属性源包含加密的内容(以开头的值{cipher}),则将其解密,然后再通过HTTP发送给客户端。

  

  郑州不孕不育医院哪家好:http://www.zzfkyy120.com/郑州看不孕不育医院:http://www.zzfkyy120.com/郑州同济医院:http://www.zzfkyy120.com/

  配置中心客户端

  Config Client 控制层添加获取配置信息代码。

  package com.example.controller;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.cloud.context.config.annotation.RefreshScope;

  import org.springframework.web.bind.annotation.GetMapping;

  import org.springframework.web.bind.annotation.RestController;

  @RefreshScope

  @RestController

  public class ConfigController {

  @Value("${name}")

  private String name;

  @Value("${password}")

  private String password;

  @GetMapping("/name")

  public String getName() {

  return name;

  }

  @GetMapping("/password")

  public String getPassword() {

  return password;

  }

  }

以上是 SpringCloud系列之Config配置中心 的全部内容, 来源链接: utcz.com/z/533625.html

回到顶部