Почему мой 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. Разверните приложение с помощью пользовательского пакета сборки. Одно предупреждение: вы / я не получим автоматические обновления.