Spring Cloud Config服務端配置細節(二)之加密解密

在微服務架構中,因爲獨立的服務個數衆多,加上前期測試工做量大,一些本來由運維人員維護的敏感信息會被咱們直接寫在微服務中,以提升開發效率,可是這種明文存儲方式顯然是很是危險的,因此咱們要對這些信息進行加密,而Spring Cloud Config則提供了對稱加解密、非對稱加解密的功能來幫助咱們完成這一需求。OK,本文咱們就來看看如何實現配置信息的加解密。bootstrap


本文是Spring Cloud系列的第二十四篇文章,瞭解前二十三篇文章內容有助於更好的理解本文: 緩存

1.使用Spring Cloud搭建服務註冊中心
2.使用Spring Cloud搭建高可用服務註冊中心
3.Spring Cloud中服務的發現與消費
4.Eureka中的核心概念
5.什麼是客戶端負載均衡
6.Spring RestTemplate中幾種常見的請求方式
7.RestTemplate的逆襲之路,從發送請求到負載均衡
8.Spring Cloud中負載均衡器概覽
9.Spring Cloud中的負載均衡策略
10.Spring Cloud中的斷路器Hystrix
11.Spring Cloud自定義Hystrix請求命令
12.Spring Cloud中Hystrix的服務降級與異常處理
13.Spring Cloud中Hystrix的請求緩存
14.Spring Cloud中Hystrix的請求合併
15.Spring Cloud中Hystrix儀表盤與Turbine集羣監控
16.Spring Cloud中聲明式服務調用Feign
17.Spring Cloud中Feign的繼承特性
18.Spring Cloud中Feign配置詳解
19.Spring Cloud中的API網關服務Zuul
20.Spring Cloud Zuul中路由配置細節
21.Spring Cloud Zuul中異常處理細節
22.分佈式配置中心Spring Cloud Config初窺
23.Spring Cloud Config服務端配置細節(一)安全


準備工做

默認狀況下咱們的JRE中自帶了JCE(Java Cryptography Extension),可是默認是一個有限長度的版本,咱們這裏須要一個不限長度的JCE,這個JCE咱們能夠直接百度而後在Oracle官網下載,下載以後解壓,咱們能夠看到以下三個文件: 架構

圖片描述

咱們須要將這裏的兩個jar包拷貝到咱們的jdk安裝目錄下,個人是%JAVA_HOME%\jre\lib\security,覆蓋該目錄下原有的文件。 負載均衡

如此以後,咱們的準備工做就完成了。運維

對稱加解密

對稱加解密比較簡單,直接配置密鑰就能夠了,在咱們前文建立出來的config-server中配置密鑰,可是注意這個密鑰須要配置在bootstrap.properties中,另外這裏還有很是重要一點:Spring Cloud的Dalston.SR3和Dalston.SR2版本在這個問題上是有BUG的,若是用這兩個版本在這裏測試會沒有效果,應該避開使用這兩個版本,我這裏使用的是Dalston.SR4版本,配置以下:分佈式

encrypt.key=sang

配置完成以後,啓動咱們的config-server工程,而後訪問以下地址http://localhost:2007/encrypt/status,若是看到以下訪問結果,表示環境搭建成功了: 微服務

圖片描述

此時咱們就能夠經過第三方工具如POSTMAN、RestClient等來訪問/encrypt和/decrypt接口,好比說我要給dev這個字符加密,方式以下(我這裏以POSTMAN爲例,注意是POST請求): 工具

圖片描述

解密方式以下: 測試

圖片描述

OK,拿到加密的字符串以後,咱們就能夠在配置文件中使用了,仍是咱們昨天的配置文件,此次我這樣來寫:

圖片描述

小夥伴們注意,配置文件的值若是是以{cipher}開頭,表示該值是一個加密字符,配置中心config-server在獲取到這個值以後會先對值進行解密,解密以後纔會返回給客戶端使用。

非對稱加解密

上文咱們使用了對稱加解密的方式來確保配置文件的安全性,若是使用非對稱加解密的方式,咱們的安全性將會獲得進一步的提升。使用非對稱加密的話須要咱們先生成密鑰對,生成密鑰對能夠直接使用jdk中自帶的keytool工具,方式以下:

keytool -genkeypair -alias config-server -keyalg RSA -keystore config-server.keystore

執行效果如圖:

圖片描述

執行成功以後,會在命令執行目錄下生成一個名爲config-server.keystore的文件,將該文件拷貝到config-server的srcmainresources目錄下,而後作以下配置:

encrypt.key-store.location=config-server.keystore
encrypt.key-store.alias=config-server
encrypt.key-store.password=111111
encrypt.key-store.secret=111111

OK,如此以後咱們的非對稱加密就配置好了,測試方式和對稱加密的測試方式一致,我這裏就再也不演示了。

Spring Cloud Config的加解密咱們就說到這裏,有問題歡迎留言討論。

參考資料:

1.《Spring Cloud微服務實戰》

更多JavaEE資料請關注公衆號:

圖片描述

相關文章
相關標籤/搜索