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'