W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
重要:
要使用加密和解密功能,您需要在JVM中安裝完整功能的JCE(默認情況下不包括)。您可以從Oracle 下載“ Java密碼學擴展(JCE)無限強度轄區(qū)策略文件 ”并按照安裝說明進行操作(本質上,您需要用下載的JRE lib / security目錄替換這兩個策略文件)。
如果遠程屬性源包含加密的內(nèi)容(值以?{cipher}
?開頭),則在通過HTTP發(fā)送給客戶端之前,將對它們進行解密。此設置的主要優(yōu)點是,當屬性值處于“ 靜止 ”狀態(tài)時(例如,在git存儲庫中),不需要使用純文本格式。如果無法解密某個值,則將其從屬性源中刪除,并使用相同的密鑰添加一個附加屬性,但附加前綴為?invalid
?和一個表示“ 不適用 ”的值(通常為?<n/a>
?)。這很大程度上是為了防止將密文用作密碼并意外泄漏。
如果為配置客戶端應用程序設置了遠程配置存儲庫,則它可能包含與以下內(nèi)容類似的?application.yml
?:
application.yml。
spring: datasource: username: dbuser password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'
.properties文件中的加密值不能用引號引起來。否則,該值不會解密。以下示例顯示了有效的值:
application.properties。
spring.datasource.username: dbuser spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ
您可以安全地將此純文本推送到共享的git存儲庫,并且秘密密碼仍然受到保護。
服務器還公開?/encrypt
?和?/decrypt
?端點(假設這些端點是安全的,并且只能由授權代理訪問)。如果您編輯遠程配置文件,則可以使用Config Server通過POST到?/encrypt
?端點來加密值,如以下示例所示:
$ curl localhost:8888/encrypt -d mysecret 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
如果您加密的值中包含需要URL編碼的字符,則應對
curl
使用--data-urlencode
選項以確保它們正確編碼。
確保不要在加密值中包含任何curl命令統(tǒng)計信息。將值輸出到文件可以幫助避免此問題。
也可以通過?/decrypt
?使用反向操作(前提是服務器配置了對稱密鑰或完整密鑰對),如以下示例所示:
$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda mysecret
如果使用curl進行測試,請使用
--data-urlencode
(而不是-d
)或設置顯式的Content-Type: text/plain
以確保在有特殊字符時,curl可以正確編碼數(shù)據(jù)(“ +”特別棘手)。
在將加密的值放入YAML或屬性文件之前,以及將其提交并將其推送到遠程(可能不安全)存儲之前,請獲取加密的值并添加?{cipher}
?前綴。
?/encrypt
?和?/decrypt
?端點也都接受?/*/{application}/{profiles}
?形式的路徑,當客戶端調(diào)用主應用程序時,可用于按應用程序(名稱)和配置文件控制密碼。環(huán)境資源。
要以這種精細的方式控制密碼,您還必須提供類型為
TextEncryptorLocator
的@Bean
,以按名稱和配置文件創(chuàng)建不同的加密器。默認情況下不提供(所有加密使用相同的密鑰)。
?spring
?命令行客戶端(安裝了Spring Cloud CLI擴展名)也可以用于加密和解密,如以下示例所示:
$ spring encrypt mysecret --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda $ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda mysecret
要使用文件中的密鑰(例如用于加密的RSA公鑰),請在密鑰值前添加“ @”并提供文件路徑,如以下示例所示:
$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...
--key
參數(shù)是強制性的(盡管前綴為--
)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: