0

我有一个 ConfigServer,非常基础:

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

我正在使用 spring-cloud-config-server:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

我希望它在部署到 Pivotal Web 服务时的工作方式与我在本地运行时一样。

我使用加密密钥将我的配置部署到公共服务器:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://mypublic.domain/gitbasedconfig

在我的 bootstrap.yml、application.yml 中,我有一个带有密钥的属性:

encrypt:
  key: my.super.secret.symmetric.key

这一切都在本地工作:

curl http://localhost:8888/myservice/default

以正确解密的所有加密密码进行响应。

当我使用以下 manifest.yml 将相同的工件部署到 PWS 时:

---
applications:
  - name: myservice
    memory: 384M
    disk: 384M
    buildpack: java_buildpack
    path: target/myservice.jar
env:
  ENCRYPT_KEY: my.super.secret.symmetric.key

如果我部署有或没有 env->ENCRYPT_KEY 都不起作用。当我调用该服务时,我所有的加密密钥都返回为

invalid.my.key.name: "<n/a>",

在 PWS 日志中,我可以看到:

Fri May 20 2016 13:26:21 GMT-0500 (CDT) [APP] OUT {"timeMillis":1463768781279,"thread":"http-nio-8080-exec-4","level":"WARN","loggerName":"org.springframework.cloud.config.server.encryption.CipherEnvironmentEncryptor","message":"Cannot decrypt key: my.key.name (class java.lang.IllegalArgumentException: Unable to initialize due to invalid secret key)","endOfBatch":false,"loggerFqcn":"org.apache.commons.logging.impl.SLF4JLocationAwareLog","contextMap":[],"source":{"class":"org.springframework.cloud.config.server.encryption.CipherEnvironmentEncryptor","method":"decrypt","file":"CipherEnvironmentEncryptor.java","line":81}}

当我查看http://myservice.on.pws/env时,我可以看到 application.yml、bootstrap.yml 中都有 encrypt.key 的值,我还可以看到环境值。这些都是相同的值。

当我在属性文件和/或环境中提供对称密钥值时,为什么我的加密值没有被正确解密?是否需要添加一些其他属性才能在 PWS 上进行这项工作?未加密的值在相同的配置中正常工作,因此一切都正确连接。只是加密的值不起作用。

4

1 回答 1

0

我认为斯宾塞吉布和维尼修斯卡瓦略都是正确的。

Java Cryptopgraphy Extensions 不能与标准 java buildpack 一起分发。

Pivotal 支持站点提供了一个可能的解决方案,即分叉 javabuildpack 并更新它以包含 JCE 的适当权限。使用自定义 buildpack 部署应用程序。一个警告是你/我不会得到自动更新。

https://support.run.pivotal.io/entries/76559625-How-do-I-use-the-JCE-Unlimited-Strength-policy-with-my-Java-app-

于 2016-05-21T01:07:46.017 回答