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

问题描述 投票:2回答:1

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

配置服务扮演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。

谢谢

java spring-boot encryption spring-cloud spring-cloud-config
1个回答
2
投票

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

您需要的是在您的应用程序中显示变量。要实现这一点,您可以通过“系统属性”选项设置环境变量(点击Windows键并键入edit the system environment variables)。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.