Spring-boot-1
Любой из следующих аргументов виртуальной машины действителен для предоставления секретного ключа, чтобы Spring могла расшифровать '{cipher}f75146b2d391aa6'
при загрузке свойств.
- encrypt.key (ключ по умолчанию)
- encrypt_key
- encryptKey
- encryptkey
- ENCRYPT.KEY
- ENCRYPT_KEY
- ENCRYPTKEY
Spring использует org.springframework.boot.bind.RelaxedPropertyResolver
для разрешения указанных выше ключей, чтобы получить секретный ключ, но этот класс устарел и удален в spring-boot-2
.
Фрагмент кода в spring-cloud-context-1.x.jar
из класса org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration
Environment environment = context.getEnvironment();
RelaxedPropertyResolver propertyResolver = new RelaxedPropertyResolver(environment);
hasProperty(propertyResolver, environment, "encrypt.key");
private boolean hasProperty(RelaxedPropertyResolver propertyResolver, Environment environment, String key) {
String value = propertyResolver.getProperty(key);
if (value == null) {
return false;
}
return StringUtils.hasText(environment.resolvePlaceholders(value));
}
Spring-boot-2
Только encrypt.key
является допустимым аргументом VMпередать секретный ключ.
Фрагмент кода в spring-cloud-context-2.x.jar
из класса org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration
Environment environment = context.getEnvironment();
hasProperty(environment, "encrypt.key");
private boolean hasProperty(Environment environment, String key) {
String value = environment.getProperty(key);
if (value == null) {
return false;
}
return StringUtils.hasText(environment.resolvePlaceholders(value));
}