WSO2 Identity Server: как ввести пароль хранилища ключей и секретного ключа на Dockerized WSO2 - PullRequest
0 голосов
/ 02 января 2019

После запуска сценария ciphertool.bat или ciphertool.sh в каталоге bin сервера идентификации WSO2 при следующем запуске сервера вам будет предложено указать пароль хранилища ключей и секретного ключа, используемый для настройте безопасное хранилище WSO2. Пример:

C:\Program Files\WSO2\Identity Server\5.7.0\bin>wso2server.bat --start
JAVA_HOME environment variable is set to C:\Program Files\Java\jdk1.8.0_181
CARBON_HOME environment variable is set to C:\PROGRA~1\WSO2\IDENTI~1\570D0D~1.0\bin\..
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[Enter KeyStore and Private Key Password :]

У меня есть экземпляр сервера идентификации WSO2, который работает в контейнере Docker. Мои пароли зашифрованы, поэтому я должен предоставить пароль хранилища ключей / секретного ключа при запуске.

Это создает проблему:

Мне нужно запустить свой док-контейнер с флагом -it, чтобы создать активную оболочку bash в контейнере, которая позволяет мне вводить пароль хранилища ключей и личного ключа. Моя команда запуска докера выглядит так docker run -p 443:443 -it wso2-test .. Если я не включу флаг -it, WSO2 IS никогда не будет запрашивать пароль, и пароли не будут разрешены, что приведет к сбою.

Я не хочу использовать флаг -it, потому что он заставляет пользователя вводить данные, и я бы хотел, чтобы контейнеры запускались независимо.

Чтобы все было как можно более автоматизировано, я хочу предоставить хранилище ключей и пароль закрытого ключа сразу при запуске сценария wso2server.sh (который является точкой входа в мой Dockerfile), а не при отображении приглашения , Это возможно?

В идеале решение должно иметь точку входа в Dockerfile, которая выглядит примерно так:

ENTRYPOINT ["wso2server.sh", "run", "KEYSTORE_PASSWORD"]

1 Ответ

0 голосов
/ 04 января 2019

Вы должны передать пароль хранилища ключей в качестве переменной среды команде docker run.

docker run -e KEY_STORE_PASSWORD=wso2carbon secvault-test:latest

Эта переменная среды должна быть прочитана командой ENTRYPOINT и записана в файл с именем password-tmp в каталоге $ PRODUCT_HOME. Вот пример Dockerfile с ENTRYPOINT:

$> кошка Dockerfile

FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]

Проверка безопасности:

Поскольку пароль не вставляется в образ докера, мы можем смело отправлять образ в реестр. Кроме того, вам нужно будет вводить переменную среды всякий раз, когда вы запускаете новый контейнер. Обратите внимание, что переменные среды контейнеров отображаются с помощью команды docker inspect.

...