跟我學Spring Cloud(Finchley版)-21-Spring Cloud Config-配置屬性加解密

前文都是將配置明文存儲在Git倉庫中,但在實際項目中,敏感的配置屬性(例如數據庫帳號、密碼等),都應加密存儲,從而提升安全性。html

Config Server爲配置內容的加密與解密提供了支持。java

安裝JCE

加解密端點

  • 加密:curl $CONFIG_URL/encrypt -d 想要加密的內容
  • 解密:curl $CONFIG_URL/decrypt -d 想要解密的密文

對稱加密

  • Config Server的bootstrap.yml中添加:git

    encrypt:
      key: foo  # 設置對稱密鑰

密文存儲

  • 以yaml格式存儲:github

    spring:
      datasource:
        username: dbuser
        password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
  • 以properties格式存儲:spring

    spring.datasource.username=dbuser
    spring.datasource.password={cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3

測試

  • 輸入命令數據庫

    curl http://localhost:8080/encrypt -d mysecret

    返回851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3 。說明mysecret 被加密了。bootstrap

  • 輸入命令安全

    curl http://localhost:8080/decrypt -d 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3

    可返回mysecret ,說明可以正常解密。oracle

非對稱加密

  • 執行如下命令,並按照提示操做,便可建立一個Key Store。curl

    keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass changeme -keystore server.jks -storepass letmein
  • 將生成的server.jks文件複製到項目的classpath下。

  • 在bootstrap.yml中添加如下內容。

    encrypt:
      keyStore:
        location: classpath:/server.jks # jks文件的路徑
        password: letmein               # storepass
        alias: mytestkey                # alias
        secret: changeme                # keypass

    這樣,使用命令

    curl http://localhost:8080/encrypt -d mysecret

    嘗試加密時 ,就會獲得相似如下的結果。

    AQB38UyNckYzW64rvsaIhy0OV4MUmS7krdHrw+VLUdqXJ4ZVdZL8/ouwSOAYM+6MSjKvzmkaU8Iv2cQ5MWhlZhCrm0f0d2ubc1MH96KBHTix9AroajeTiofPwPoBnWfBo9cC4PU1vD+rcvAvwvdR5q7rYbFc4yut4uJZRzpAXGgf680kAtb6tEtLx7c4/35PEaGXFWd2m8gn21vzWdvhbP6cdC9YlburL0Rq/0H1G+uEX99ZVIWJ0hVn4rplLWPMLUGA2ZVEyVRorIRX/2z5MU7cVPtJ6X1JZDpU4GVz8/3rD5BnbVFTGo6DfBrEzJn58Bzjl6aqo9ca/3j42RHOoQDOHXGqRX/843RbPdvMqTZd0rTOBHTUrVG9E15sCajiLkw=

    相對於對稱加密,非對稱加密的安全性更高,但對稱加密相對方便。讀者可按照需求,自行選擇加密方案。

注意點&坑

encrypt.* 務必存放在bootstrap.* 中,不然加解密特性沒法生效!!

配套代碼

對稱加密

非對稱加密

相關文章

本文首發

http://www.itmuch.com/spring-cloud/finchley-21/

乾貨分享

全是乾貨!

相關文章
相關標籤/搜索