Spring cloud config无法读取ENCRYPT_KEY环境变量

时间:2017-12-30 14:23:31

标签: java spring-boot encryption spring-cloud spring-cloud-config

我目前正在开发一个具有微服务架构的应用程序。我现在有两项服务:产品服务和配置服务。

配置服务扮演spring cloud配置服务器的角色,而产品服务扮演spring cloud配置客户端的角色。

要启动我的应用程序,首先应运行配置服务,然后运行产品服务,这样产品服务可以询问其配置(application.properties)文件以建立与数据库的连接等。我现在想要的是加密一些敏感属性,如数据库凭据。为什么?因为如果你到达云配置服务http://localhost:8888/productservice/env的端点,你可以找到这些信息作为纯文本,这是不好的。

暂时我想使用symetric加密,所以如果我在操作系统中将变量环境设置为ENCRYPT_KEY,请按照文档进行操作,我的spring cloud配置服务器应加密和解密我的数据。

我正在使用Windows 10并使用set命令我可以看到使用正确的密码字正确设置了ENCRYPT_KEY。

但是,当我尝试使用我的云配置服务器的POST方法访问/ encrypt端点时,它会响应未找到的404:

{
    "description": "No key was installed for encryption service",
    "status": "NO_KEY"
}

我正在使用Edgware.RELEASE版本的spring-cloud。

谢谢

1 个答案:

答案 0 :(得分:2)

我认为问题是您使用set命令设置了环境变量。 当使用set命令设置变量时,该变量仅在该CMD会话中可用。

您需要做的是使变量在您的应用中可见。为此,您可以通过“系统属性”选项(点击Windows键并键入edit the system environment variables)来设置环境变量。

还要通过在应用程序System.getenv("ENCRYPT_KEY")方法中执行类似main的操作来确保您的应用程序可以读取变量值。

顺便说一句,如果您使用的是Eclipse,则可以在运行运行配置... 环境选项卡中设置环境变量。