【问题标题】:Spring cloud config can't read ENCRYPT_KEY environment variableSpring cloud config 无法读取 ENCRYPT_KEY 环境变量
【发布时间】:2018-06-10 14:45:24
【问题描述】:

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

配置服务扮演spring cloud config server的角色,product service扮演spring cloud config客户端的角色。

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

暂时我想使用对称加密,所以如果我在我的操作系统中将变量环境设置为 ENCRYPT_KEY,我的 spring 云配置服务器应该加密和解密我的数据。

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

但是,当我尝试使用云配置服务器的 POST 方法到达 /encrypt 端点时,它会以 404 not found 响应:

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

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

谢谢

【问题讨论】:

  • 你解决过这个问题吗?如果不能,您可以包含 manage/env 端点的输出吗?

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


【解决方案1】:

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

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

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

顺便说一下,如果您使用的是 Eclipse,您可以在 Run、Run Configurations...、Environment 选项卡中设置环境变量。

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 2019-11-21
    • 1970-01-01
    • 2014-08-16
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    相关资源
    最近更新 更多