SETUP
Я настроил сервер Spring Cloud Config при поддержке локального репозитория Git и создал приложение Spring Boot для использования конфигурации из SCC. Файл конфигурации scc-client.yml
в Git имеет два простых текстовых свойства и одно зашифрованное, app.secret
:
app:
name: client-app
port: 8085
secret: '{cipher}AgCGh ... X3pTW'
Расшифровка выполняется на стороне клиента: bootstrap.properties
на сервере SCC имеет spring.cloud.config.server.encrypt.enabled=false
, а bootstrap.yml
моего приложения Spring Boot содержит:
...
encrypt:
keystore:
location: classpath:keystore.p12
password: kspass
alias: client-key
secret: kspass
key: client-key
rsa:
strong: true
...
keystore.p12 содержит ключ, используемый для шифрования значения app.secret
. Я сгенерировал ключ, используя keytool:
keytool -genkeypair -alias client-key -keyalg RSA -deststoretype pkcs12 -keystore src/main/resources/keystore.p12 -keysize 4096 -storepass kspass -keypass kspass
ВОПРОС
Использует ли Spring гибридный подход к шифрованию RSA при расшифровке значения на стороне клиента в приведенной выше настройке?
Судя по коду, некоторые связанные с AES компоненты вызываются в методе o.s.s.r.c.RsaSecretEncryptor.decrypt()
, но я не совсем уверен, представляет ли это полное гибридное шифрование с самогенерируемым ключом AES, используемым вдоль способ.