17

我有一个使用 Spring Cloud Config 的 Spring Boot 应用程序,但我想在 Spring Boot 应用程序 bootstrap.yml 文件中加密 Spring Cloud Config 密码。有没有办法做到这一点?下面是一个例子。

Spring Boot 应用程序 bootstrap.yml

spring:
  cloud:
    config:
      uri: http://locahost:8888
      username: user
      password: '{cipher}encryptedpassword'
4

3 回答 3

17

我发现的几件事与此有关。

如果使用 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"
于 2015-05-20T19:56:10.377 回答
11

配置客户端支持加密属性(如用户指南中所述)。显然,如果你这样做,你必须提供一个密钥来在运行时解密属性,所以实际上我并不总是看到好处(我想配置文件有点像一个特殊格式的密钥库,所以你只有一个秘密要保护,而不是许多)。示例(application.yml):

integration:
  stores:
    test: '{cipher}316f8cdbb776c23e679bf209014788a6eab7522f48f97114328c2c9388e6b3c1'

和密钥(在 bootstrap.yml 中):

encrypt:
  key: ${ENCRYPT_KEY:} # deadbeef
于 2015-02-10T15:01:50.047 回答
5

您可以使用 Spring CLI 来加密秘密spring encrypt password --key 'SECRET_KEY'

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

于 2017-06-02T17:57:09.177 回答