您好,登錄后才能下訂單哦!
前文都是將配置明文存儲在Git倉庫中,但在實際項目中,敏感的配置屬性(例如數據庫賬號、密碼等),都應加密存儲,從而提高安全性。
Config Server為配置內容的加密與解密提供了支持。
curl $CONFIG_URL/encrypt -d 想要加密的內容
curl $CONFIG_URL/decrypt -d 想要解密的密文
Config Server的bootstrap.yml中添加:
encrypt:
key: foo # 設置對稱密鑰
以yaml格式存儲:
spring:
datasource:
username: dbuser
password: '{cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3'
以properties格式存儲:
spring.datasource.username=dbuser
spring.datasource.password={cipher}851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
輸入命令
curl http://localhost:8080/encrypt -d mysecret
返回851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
。說明mysecret
被加密了。
輸入命令
curl http://localhost:8080/decrypt -d 851a6effab6619f43157a714061f4602be0131b73b56b0451a7e268c880daea3
可返回mysecret
,說明能夠正常解密。
執行以下命令,并按照提示操作,即可創建一個Key Store。
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/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。