WSO2 Identity Server:如何在停靠的WSO2 Identity Server中输入密钥库和私钥密码

WSO2 Identity Server:如何在停靠的WSO2 Identity Server中输入密钥库和私钥密码,wso2,wso2is,Wso2,Wso2is,在WSO2 Identity server的bin目录中运行ciphertool.bat或ciphertool.sh脚本后,下次启动服务器时,系统会提示您输入用于配置WSO2 secure vault的密钥库和私钥密码。例如: C:\Program Files\WSO2\Identity Server\5.7.0\bin>wso2server.bat --start JAVA_HOME environment variable is set to C:\Program Files\Java

在WSO2 Identity server的bin目录中运行ciphertool.bat或ciphertool.sh脚本后,下次启动服务器时,系统会提示您输入用于配置WSO2 secure vault的密钥库和私钥密码。例如:

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 :]
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容器中的WSO2 identity server实例。我的密码是加密的,因此我需要在启动时提供密钥库/私钥密码

FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
但这带来了一个问题:

FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
我必须使用
-it
标志运行docker容器,以便在容器中创建一个活动bash shell,允许我键入密钥库和私钥密码。我的docker run命令类似于
docker run-p 443:443-it wso2测试。
。如果我没有包含
-it
标志,WSO2将永远不会请求密码,密码也不会得到解析,从而导致所有操作都失败

FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
我不想使用
-it
标志,因为它强制用户输入,并且我希望容器独立运行

FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
为了使事情尽可能自动化,我希望在运行
wso2server.sh
脚本(这是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"]
理想情况下,解决方案的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"]

ENTRYPOINT[“wso2server.sh”、“run”、“KEYSTORE\u PASSWORD”]
您应该将KEYSTORE密码作为环境变量传递给
docker run
命令

docker run -e KEY_STORE_PASSWORD=wso2carbon secvault-test:latest
FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
应通过ENTRYPOINT命令读取此环境变量,并将其写入$PRODUCT_主目录下名为
password tmp
的文件中。以下是带有入口点的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"]
$>cat 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"]
安全检查:

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映像中,因此我们可以安全地将映像推送到注册表。此外,每当旋转新容器时,都需要输入环境变量。请注意,容器的环境变量可通过
docker inspect
命令查看。

您应将密钥库密码作为环境变量传递给
docker run
命令

docker run -e KEY_STORE_PASSWORD=wso2carbon secvault-test:latest
FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

ENTRYPOINT ["/bin/sh", "-c", "echo $KEY_STORE_PASSWORD > password-tmp && wso2server.sh run"]
应通过ENTRYPOINT命令读取此环境变量,并将其写入$PRODUCT_主目录下名为
password tmp
的文件中。以下是带有入口点的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"]
$>cat 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"]
安全检查:

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映像中,因此我们可以安全地将映像推送到注册表。此外,每当旋转新容器时,都需要输入环境变量。请注意,容器的环境变量通过
docker inspect
命令可见。

我使用两个wso2is-5.7.0包尝试了这一点。我在一个包中运行了
ciphertool.sh-Dconfigure
(比如A),并将
secret-conf.properties
复制到另一个包中(比如B)。然后试图启动B,它要求提供
密钥库和私钥密码
。因此,请再次检查您是否已从运行的另一个包
ciphertool.sh-Dconfigure
secret-conf.properties
正确复制到已停靠的实现中。谢谢Sajith。实际问题是docker容器不允许用户输入,除非添加了
-it
标志。使用-
it
标志,它可以按预期工作。但是,我希望能够在运行
docker run
命令时提供密码,而不必在运行
docker run
命令后提供用户输入。我已经更新了问题以反映新问题。如何使用
password persist.txt
password tmp.txt
,如下文所述?我在WSO2
bin
文件夹中没有看到
daemon.sh
daemon.bat
。我正在运行v5.7.0。我错过什么了吗?另外,WSO2文档读取
守护进程。sh wso2server.sh-start
我假设它应该是daemon.sh wso2server.sh-start(没有空格)编辑:我确实看到了
forgetme.sh
forgetme.bin
。这就是我应该使用的吗?没关系,我看到“forgetme”脚本用于其他用途。但是,我仍然找不到
daemon.sh
脚本。我使用了两个wso2is-5.7.0包尝试了这一点。我在一个包中运行了
ciphertool.sh-Dconfigure
(比如A),并将
secret-conf.properties
复制到另一个包中(比如B)。然后试图启动B,它要求提供
密钥库和私钥密码
。因此,请再次检查您是否已从运行的另一个包
ciphertool.sh-Dconfigure
secret-conf.properties
正确复制到已停靠的实现中。谢谢Sajith。实际问题是docker容器不允许用户输入,除非添加了
-it
标志。使用-
it
标志,它可以按预期工作。但是,我希望能够在运行
docker run
命令时提供密码,而不必在运行
docker run
命令后提供用户输入。我已经更新了问题以反映新问题。如何使用
password persist.txt
password tmp.txt
,如下文所述?我在WSO2
bin
文件夹中没有看到
daemon.sh
daemon.bat
。我正在运行v5.7.0。我错过什么了吗?另外,WSO2文档读取
守护进程。sh wso2server.sh-start
我想应该是<
FROM ubuntu:16.04

RUN mkdir /opt/wso2is
WORKDIR /opt/wso2is

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