JHipster技術棧定製 - JHipster Registry 配置資訊加密
阿新 • • 發佈:2018-11-17
1 整體規劃
1.1 名詞說明
名詞 | 說明 | 備註 |
---|---|---|
對稱加密 | 最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key)。 | 直接在bootstrap.yml檔案中設定好key |
非對稱加密 | 非對稱加密使用了一對金鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外洩,而公鑰則可以發給任何請求它的人。 | 需要通過keytool工具生成金鑰對,並放置在Jhipster-Registry的類路徑下。 |
1.2 相關元件
元件名 | 說明 | 版本 |
---|---|---|
Jhipster-Registry | 基於eureka和spring cloud config的基礎服務。 | v3.2.4 |
myClient | 一個客戶端服務,用於測試加解密效果。 | 1.0 |
GitLab配置庫 | Jhipster-Registry引用的GitLab倉庫。所有的配置檔案所在地。 |
2 JhipsterRegistry設定
2.1 對稱加密設定
a) 修改bootstrap.yml
spring:
cloud:
config:
server:
encrypt:
enabled: true # 開啟加解密endpoint
# 設定對稱金鑰
encrypt:
key: changeit
b) 構建並重新啟動JhipsterRegistry服務
2.2 非對稱加密設定
a) 生成金鑰對
$ keytool -genkeypair -alias configkey -keyalg \ RSA -dname "C=CN,ST=GD,L=GZ,O=YOURCOMPANY,OU=YOURCOMPANY,CN=registry" \ -keypass changeit1 -storepass changeit2 -keystore config-server.jks
b) 將config-server.jks放到jhipster-registry的src/main/resources目錄下
c) 修改bootstrap.yml
spring:
cloud:
config:
server:
encrypt:
enabled: true # 開啟加解密endpoint
encrypt:
keyStore: # 非對稱加密
location: classpath:/config-server.jks # jks檔案的路徑
password: changeit2 # storepass,和生成金鑰時的引數值保持一致
alias: configkey # alias,和生成金鑰時的引數值保持一致
secret: changeit1 # keypass,和生成金鑰時的引數值保持一致
d) 構建並重新啟動JhipsterRegistry服務
3 測試效果
3.1 使用加解密功能
a) 通過UI使用加解密功能
http://yourdomain:8761/#/encryption
b) 通過命令列使用加解密功能
$ curl yourdomain:8761/encrypt -d <要加密的明文>
$ curl yourdomain:8761/decrypt -d <想要解密的密文>
3.2 加密應用的配置資訊
a) 加密myClient的資料庫密碼的明文資訊
$ curl yourdomain:8761/encrypt -d my-secret-pw
b) 獲得資料庫密碼的密文資訊
{cipher}188e937623c258e8ca180b798………………………a4eb20ff5ff3568cf
c) 儲存密文到myClient的application-prod.yml
spring:
datasource:
username: root
password: '{cipher}188e937623c258e8ca180b798………………………a4eb20ff5ff3568cf'
# 注意yml檔案中密文要放在單引號中
d) 上傳application-prod.yml到GitLab倉庫
e) 通過jhipster-registry的管理頁面檢視配置屬性password,驗證值是否已經解密:
http://yourdomain:8761/#/config