Почему мой EnableConfigServer encrypt.key / ENCRYPT_KEY не работает в Pivotal Web Services?

У меня есть 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 Services, как и при локальном запуске.

Я развернул свои конфиги на общедоступном сервере с зашифрованными ключами:

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

отвечает со всеми моими зашифрованными паролями, расшифрованными должным образом.

Когда я развертываю тот же артефакт в PWS со следующим manifest.yml:

---
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 я вижу, что есть значения для encrypt.key как в application.yml, так и в bootstrap.yml, и я также вижу значение среды. Это все одинаковые значения.

Почему мои зашифрованные значения не расшифровываются должным образом, когда я предоставляю значение симметричного ключа в файлах свойств и / или в среде? Есть ли какое-то другое свойство, которое мне нужно добавить, чтобы эта работа работала в PWS? Незашифрованные значения работают должным образом в тех же самых конфигах, поэтому все подключено правильно. Это просто зашифрованные значения, которые не работают.

1 ответ

Я думаю, что Спенсергибб и Виниций Карвалью оба были правы.

Расширения Java Cryptopgraphy не могут распространяться с помощью стандартного пакета сборки Java.

Сайт Pivotal Support предоставил возможное решение, заключающееся в том, чтобы разветвить java buildpack и обновить его, чтобы включить соответствующие разрешения для JCE. Разверните приложение с помощью пользовательского пакета сборки. Одно предупреждение: вы / я не получим автоматические обновления.

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

Другие вопросы по тегам