我有一个使用Spring Cloud Config的Spring Boot应用程序,但我想在Spring Boot apps bootstrap.yml文件中加密Spring Cloud Config密码。有没有办法做到这一点?以下是一个例子。
Spring Boot app bootstrap.yml
spring:
cloud:
config:
uri: http://locahost:8888
username: user
password: '{cipher}encryptedpassword'
答案 0 :(得分:11)
我发现了一些与此相关的事情。
如果使用bootstrap.yml(或application.yml),密文的格式必须用单引号括起来:
security.user.password: '{cipher}56e611ce4a99ffd99908d2c9aa1461d831722812e4370a5b6900b7ea680ae914'
如果使用bootstrap.properties(或application.properties),则不得包含密文的格式:
security.user.password= {cipher}56e611ce4a99ffd99908d2c9aa1461d831722812e4370a5b6900b7ea680ae914
[参考文档] [1]显示没有引号的yml,我从来没有工作过。 SnakeYaml总是报告错误:
"expected <block end>, but found Scalar"
答案 1 :(得分:8)
在配置客户端中支持加密属性(如user guide中所述)。显然,如果你这样做,你必须提供一个密钥来解密运行时的属性,所以实际上我并不总是看到好处(我想配置文件有点像一个特殊格式的密钥库,所以你只有一个保护秘密而不是许多秘密。示例(application.yml):
integration:
stores:
test: '{cipher}316f8cdbb776c23e679bf209014788a6eab7522f48f97114328c2c9388e6b3c1'
和密钥(在bootstrap.yml中):
encrypt:
key: ${ENCRYPT_KEY:} # deadbeef
答案 2 :(得分:3)
您可以使用Spring CLI加密机密spring encrypt password --key 'SECRET_KEY'