01配置資源庫
1、配置資源規則詳解
Spring Cloud Config是通過EnvironmentRepository來獲取Environment對象解決的。該對象是對Spring的Environment(包括做為主要配置屬性的propertySources)對象的淺拷貝。在加載Environment相應資源時參數變化成了以下變量:
{application}:對應客戶端配置中的spring.application.name。{profile}:對應客戶端配置中的spring.profiles.action。{label}:對應配置服務端鎖配置的spring.cloud.config.label。
當配置客戶端啟動時,根據bootstrap.yml中配置的應用名稱(spring.application.name)、環境名(spring.profiles.active),向配置伺服器請求獲取配置數據。配置伺服器根絕客戶端的請求參數、以及配置文件中鎖配置的標籤(spring.cloud.config.label),從git倉庫中按照上述規則去查找服務的配置文件。配置伺服器將匹配到的git倉庫拉取到本地,並建立本地緩存。配置伺服器根據拉取到的配置文件創建Spring的ApplicationContext實例,然後將該配置信息返回給客戶端。客戶端獲取到配置伺服器返回的數據後,將這些配置數據加載到自己的上下文中。同時,因為這些配置數據的優先級高於本地JAR包中的配置,因為將不再加載本地的配置。2、集成Git倉庫
通過spring.cloud.config.server.git.uri屬性設置好git地址,設置好git的用戶名和密碼。
3、搜索目錄
如果配置文件直接放在git根目錄下,則不需要進行設置。如果放到特定的子目錄下,需要設置searchPath指定目錄。
4、本地緩存
配置伺服器從git獲取配置信息後,將會在本地存儲一份。但無法訪問到git時,則會讀取之前緩存在本地文件系統中的配置,將這些配置信息返回給客戶端。
02配置的加密與解密
1、安裝JCE(Java Cryptography Extension)
Spring Cloud Config所提供的加解密依賴JCE是一組包,提供用於加密、秘鑰生成算法和協議,以及消息認證碼的算法及實現,這些包實現對稱、非對稱、塊和流密碼的加密支持。
https://www.oracle.com/java/technologies/javase-jce8-downloads.html,下載JCE擴展包jce_policy-8.zip。解壓,獲得兩個jar包:local_policy.jar和US_export_policy.jar。打開$JAVA_HOME/jre/lib/security目錄,將該目錄下的local_policy.jar和US_export_policy.jar文件備份到其他目錄將下載解壓後的local_policy.jar和US_export_policy.jar複製過來。2、使用對稱加密
配置服務端:
3、加密/解密端點
/encrypt:加密端點。使用該端點可以對所提供的字符串進行加密。/decrypt:解密端點。使用該端點可以對所要解密的字符串進行解密。4、客戶端解密
需要禁用掉配置服務端的解密處理。是否啟用配置伺服器的解密處理通過spring.cloud.config.server.encrypt.enabled屬性控制。在客戶端項目,增加和伺服器同樣的秘鑰。encrypt.key=test為客戶端增加spring-security-rsa依賴。
5、非對稱加密
需要使用Java工具——Keytool。Keytool是一個Java數據證書的管理工具,Keytool使用keystore文件存儲秘鑰和證書。
keystore文件裡包含兩種數據:一種是秘鑰實體-秘鑰或者是私鑰和配對公鑰(採用非對稱加密);另一種是可信任的證書實體,僅包含公鑰。
需要使用Keytool生成一個秘鑰對。
keytool -genkeypair -alias alias -keyalg RSA -dname "CN=test" -keypass secret -keystore server.jks -storepass password
然後將生成的server.jks文件複製到配置伺服器的resources目錄下。
修改配置文件