有没有办法在Spring Boot应用程序配置中使用Spring Cloud {cipher}?

时间:2015-02-09 23:09:40

标签: spring-boot spring-cloud

我有一个使用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'

3 个答案:

答案 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'

https://cloud.spring.io/spring-cloud-cli/