Использовать асимметричный ключ в качестве текста в кодировке PEM на сервере конфигурации Spring Cloud - PullRequest
0 голосов
/ 18 сентября 2018

Я создал config-сервер на основе этого примера github: https://github.com/spring-cloud-samples/configserver

Я изменил его, чтобы он указывал на мой локальный git-репозиторий, а также установил полнофункциональный JCE, установленный в моей среде.

Функции шифрования и дешифрования работали, как и ожидалось, с использованием асимметричного ключа с файлом JKS хранилища ключей: создавали зашифрованное значение с использованием конечной точки /encrypt; включил его в мой репозиторий git (свойство test); получить ключ, расшифрованный с конечной точки /{app}-{env}.yml.

В конфигурационных документах Spring Cloud говорится, что асимметричный ключ можно установить как текстовое значение в кодировке PEM в encrypt.key: http://cloud.spring.io/spring-cloud-config/1.4.x/single/spring-cloud-config.html#_key_management

Я преобразовал файл keystore.jks в файл PEM со следующим:

  1. keytool -importkeystore -srckeystore keystore.jks -destkeystore key.p12 -srcalias test -srcstoretype jks -deststoretype pkcs12

  2. openssl pkcs12 -in key.p12 -out key.pem

Я изменил файл bootstrap.yml и включил содержимое файла key.pem:

encrypt:
  failOnError: false
  key: |
    Bag Attributes
        friendlyName: test
        localKeyID: 54 69 6D 65 20 31 35 33 37 32 31 39 34 35 38 32 30 31 
    Key Attributes: <No Attributes>
    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIFxcOg3aNibsCAggA
    (...)
    0m6f+FvV3glvSE4C86VeNwKUdiEMKtzf5A/Ie9B0jhjIP/R0n4tSuQNNNRfetJxB
    3mk=
    -----END ENCRYPTED PRIVATE KEY-----
    Bag Attributes
        friendlyName: test
        localKeyID: 54 69 6D 65 20 31 35 33 37 32 31 39 34 35 38 32 30 31 
    subject=/C=Unknown/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=Unknown
    issuer=/C=Unknown/ST=Unknown/L=Unknown/O=Unknown/OU=Unknown/CN=Unknown
    -----BEGIN CERTIFICATE-----
    MIIDdzCC
    (...)
    aMgI8QW+kQ
    -----END CERTIFICATE-----

А теперь не удается расшифровать свойство test с ошибкой:

Cannot decrypt key: sftp.privateKeyPassphrase (class java.lang.IllegalArgumentException: Non-hex character in input: ..)

  1. Это должно работать так, как я ожидал, или мне нужно восстановить зашифрованное значение?
  2. Если последнее верно, мой ключ вместо этого используется как симметричный ключ?
  3. Я хотел бы избежать использования файлов конфигурации и иметь все установленные с переменными среды. Есть ли другая возможность?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...