1. 程式人生 > >springcloud系列25——Spring Cloud Config之加解密

springcloud系列25——Spring Cloud Config之加解密

前言

在《springcloud系列25——SpringCloud配置管理》中介紹了以Git為首的作為配置倉庫的示例。但是我們的配置項都是以明文的形式儲存在Git倉庫中。雖然我們可以建立私有的倉庫,然後配置倉庫的使用者名稱和密碼。但是如果賬號被破解了呢?所以,本節要介紹的是如何加密你的配置項。這裡首先介紹對稱加密在Spring Cloud Config的用法。

前提

在Spring Cloud Config中使用加解密功能,需要在你的JVM中安裝有一個沒有加密強度限制的JCE(JDK自帶的私有強度限制的)。

注:JCE全稱為Java Cryptography Extension 。

2.複製2個策略檔案替換JDK自帶的策略檔案。 解壓後,可以看到2個策略檔案

找到jdk/jre/lib/security,然後覆蓋這2個檔案。

使用

在Config Server所在的應用增加祕鑰的配置(配置到bootstrap.yml):

encrypt:
  key: foo

然後重啟Config Server應用。

Spring Cloud會我們提供了相應的加密和解密的端點。 1.加密

2.解密

我們通過Spring Cloud提供的加密端點對配置資訊進行加密,然後提交到GIT倉庫。

需要注意的是,加密的資訊前面必須有{cipher}字首。

現在,我們來請求我們剛剛上傳的加密的配置檔案。

可以看到,Spring Cloud Config已經自動為我們解密了!

客戶端使用

在上面也已經看到了,我們請求加密的配置,Spring Cloud Config為我們自動解密了,所以Cloud Config Client不需要做任何修改。

問題

1.配置encrypt.key=foo必須配置到bootstrap.yml中,不能配置到application.yml,否則無法加密。會返回如下錯誤

{
 "description":"No key was installed for encryption service",
 "status":"NO_KEY"
}

2.yml配置檔案加密項需要使用引號,而Properties檔案則不能用引號引起來。

yml配置示例:

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'