Шифрование полей файла конфигурации Spring BootJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Шифрование полей файла конфигурации Spring Boot

Сообщение Anonymous »

У меня есть приложение на основе Spring Boot, которое отправляет прослушивание порта с SSL и соответствующим хранилищем ключей и хранилищем доверенных сертификатов. У меня есть класс, который расшифровывает поля, содержащие пароли для этих магазинов. Я протестировал класс во время выполнения, и он работает, но когда я приступаю к шифрованию полей в файле, приложение выходит из строя во время выполнения. Я инкапсулирую свои зашифрованные поля с помощью ENC() и расшифровываю их с помощью следующего класса:

Код: Выделить всё

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.stereotype.Component;

@Component
public class EncryptedPropertySourcesPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer {

private static final Logger logger = LoggerFactory.getLogger(EncryptedPropertySourcesPlaceholderConfigurer.class);

@Override
protected String convertPropertyValue(String originalValue) {
logger.debug("Processing property value: {}", originalValue);

if (originalValue != null && originalValue.startsWith("ENC(") && originalValue.endsWith(")")) {
final String encryptedValue = originalValue.substring(4, originalValue.length() - 1);

try {
final String encryptionKey = System.getenv("ENCRYPTION_KEY");
if (encryptionKey == null) {
throw new IllegalStateException("ENCRYPTION_KEY environment variable is not set.");
}

final String decryptedValue = CryptoUtil.decrypt(encryptedValue, encryptionKey);
logger.debug("Decrypted value: {}", decryptedValue);
return decryptedValue;

} catch (Exception e) {
logger.error("Failed to decrypt property value: {}", originalValue, e);
throw new RuntimeException("Failed to decrypt property value", e);
}
}
return originalValue;
}
}
Мой вопрос: есть ли лучший способ сделать это? У меня пока нет удаленного хранилища. Мне интересно, делал ли кто-нибудь это аналогичным образом.
Я поместил в свой основной класс методы отладки, которые проверяли, что хранилище ключей/хранилище доверенных сертификатов найдено, что SslBundle загружается, зашифрованное значение было найден в файле, и он был правильно расшифрован. Все это сработало, но в зависимости от того, какое поле я выбираю для шифрования для проверки, приложение не работает в этом поле.

Подробнее здесь: https://stackoverflow.com/questions/792 ... encryption
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»