как передать пароль в приложение Java (Spring boot) - PullRequest
0 голосов
/ 18 октября 2019

Мы должны использовать ssl сертификат для нашего веб-сервиса отдыха, который создается через приложение springboot.

Теперь я узнал, что пароль необходим для использования сертификата. Поэтому мы меняем доступный .pem (без пароля) на .p12 (с паролем), используя openssl. Теперь мы должны предоставить этому паролю пружину.

Проблема заключается в накладных расходах, связанных с введением любого нового пароля.

Мы не можем жестко закодировать этот пароль в наших application.properties из-за плохого дизайна. Поэтому мы подумываем о том, чтобы найти другие способы использования пароля в приложении. Пока что могу придумать варианты ниже. какой из них лучше и почему?

  1. Вместо того, чтобы устанавливать пароль в application.properties, установите его из кода Java. (Я не уверен, что она будет установлена ​​как переменная окружения или системная переменная)

  2. использовать переменную окружения для хранения пароля.

  3. использовать любойтекстовый файл, в котором хранится пароль (снова не рекомендуется из-за неправильного оформления)

Ответы [ 4 ]

1 голос
/ 18 октября 2019

Вы можете реализовать свой сценарий следующим образом.

Я публикую пример примера. \

В файле свойств:

spring.datasource.url=${db.url}
spring.datasource.username=${db.username}

при запуске проекта

вы можете дать следующую команду:

java -jar -Ddb.url=jdbc:postgresql://localhost:5432/postgres -Ddb.username=postgres  sample.0.0.1-SNAPSHOT.jar(your jar name)
0 голосов
/ 18 октября 2019

Для предоставленных опций я бы пошел с опцией 2, используя переменные среды, будет проще предоставлять и изменять пароль даже в контейнерах и облаках.

Но вы также можете рассмотреть другие варианты, например, использовать безопасное хранилище kv, например Hashicorp Vault или etcd .

Обратите внимание, что с помощью Vault или etcd вы также можете динамически предоставлять и изменять сертификат, а не отправлять его вместе с приложением.

0 голосов
/ 18 октября 2019

Я могу придумать 3 способа сделать это

1. Вы можете определить свойство пароля только в application.properties, но передать значение свойстваво время запуска приложения.

java -jar -Dmyapp.password = YOUR_PASSWORD myapplication.jar

2. Вы можете поместить зашифрованные пароли в приложение. Свойства и передать ключ дешифрования во время запуска приложения. Jasypt очень хорошо играет с весенней загрузкой.

java -jar -Dmyapp.decryptKey = YOUR_KEY myapplication.jar

3. Можно использовать пружинное хранилище

0 голосов
/ 18 октября 2019

вариант 3 представляется возможным, но вместо того, чтобы хранить его в текстовом файле, вы можете зашифровать файл и добавить функцию дешифрования в приложение при чтении файла.

...