spring cloud config 屬性加解密


首先需要(Java Cryptography Extension (JCE))的支持,下載路徑:

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

在jdk的安裝目錄下/jre/lib/security,做文件替換

在config server的配置里加入

encrypt:
  key: 1112

加密需要key

然后啟動項目,在命令行執行curl

curl -X POST http://127.0.0.1:8888/encrypt -d mysecret

要加密的信息放最后,運行出來的結果就是加密后的字符串

7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703

需要解密的話,運行命令:

 

curl -X POST http://127.0.0.1:8888/decrypt -d 7de875ef75b01957a512240c1863106a84b3344aadfa5aec2b2e4cd75478f703

 

mysecret

使用加密加密到應用程序中:

application.properties
spring.datasource.username: dbuser
spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ

application.yml

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

請注意其中的差別

而客戶端正常使用即可。

 

依賴:

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

,可能暴露的問題:

{
    "timestamp": 1545212081503,
    "status": 401,
    "error": "Unauthorized",
    "message": "Full authentication is required to access this resource",
    "path": "/encrypt/status"
}

沒有權限,

問題原因:

security:
  basic:
    enabled: true #默認值是true
  user:
    name: user
    password: 123

解決辦法:

enabled=false

 

以上為對稱的加解密,以下講解非對稱加解密:

非對稱選擇在安全性方面是優越的,但是使用對稱密鑰往往更方便,因為它只是配置的一個屬性值。

要創建一個密鑰庫進行測試

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

在windows系統如果執行失敗,將命令中的 \ 去掉,此為linux系統中的換行符;

如果對此命令有興趣,可參考以下

 -alias <alias>                  要處理的條目的別名
 -keyalg <keyalg>                密鑰算法名稱
 -keysize <keysize>              密鑰位大小
 -sigalg <sigalg>                簽名算法名稱
 -destalias <destalias>          目標別名
 -dname <dname>                  唯一判別名
 -startdate <startdate>          證書有效期開始日期/時間
 -ext <value>                    X.509 擴展
 -validity <valDays>             有效天數
 -keypass <arg>                  密鑰口令
 -keystore <keystore>            密鑰庫名稱
 -storepass <arg>                密鑰庫口令
 -storetype <storetype>          密鑰庫類型
 -providername <providername>    提供方名稱
 -providerclass <providerclass>  提供方類名
 -providerarg <arg>              提供方參數
 -providerpath <pathlist>        提供方類路徑
 -v                              詳細輸出
 -protected                      通過受保護的機制的口令

 

運行后會生成server.jks文件,

server.jks文件放在類路徑(例如)中,然后在您的application.yml中配置服務器:

encrypt:
  keyStore:
    location: classpath:/server.jks
    password: letmein
    alias: mytestkey
    secret: changeme

 

啟動項目,運行命令

curl -X POST http://127.0.0.1:8888/encrypt -d 密文

AQArkCDzEKT2rJU9U+7msxdFvNqZeerM0q0zd7RJ9tyejlvzdo0eDIU6PeU693OszLI8TJ0aNPiZPkWeMJMVdO+kL8lo3EdNjQoYNpGd4sayIzhB71+0NwMKX9xqDzkZ8wz4UW8Q5qXDw1Dsj5VlmOjLD5kh+z21JNGT+EeK2ScWY2KCiy/vtUXm2ajOF5vpBWXINgvnb4+BToy8xyNbDqAORi1YehPXBdw1gEnH9c0w0uhl2dQU1MUT4+YcuaHCFOsUKJnPvxh/6cZFlvsAw1o5cT3f/fvLj3+i5VGrtx0Nu0Gn+OizrjvZ5dugS1Swjtdo+VQ5T5ONT2JxWeVBGjOW+Sxn71cJvzvDQZVkNTp9UeSVdudL23a2PGTU8fm4m94=

 

剩下的和上面一樣

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM