JHipster技術棧定製 - JHipster Registry 配置信息加密

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引用的gitlib倉庫。所有的配置文件所在地。

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到gitlib倉庫
e) 通過jhipster-registry的管理頁面查看配置屬性password,驗證值是否已經解密:

http://yourdomain:8761/#/config

f) 重啓myClient,驗證是否正確獲取password的值並連接到mysql數據庫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章