0

我有一个 Docker 容器,其中包含一个需要连接到 Vault 以检索秘密以运行该服务的服务。我的容器正在运行 Linux CentOS

在我的 Docker 容器中运行的 entrypoint.sh 脚本中,我尝试使用 Vault CLI 检索 Vault 机密,然后使用 AWS 身份验证进行身份验证。

来自 Dockerfile 的相关代码:

# Set environment variables
ENV VAULT_URL=https://releases.hashicorp.com/vault/1.0.1/vault_1.0.1_linux_amd64.zip
ENV VAULT_ADDR=MY_VAULT_ADDR_REMOVED

# Install Vault CLI for managing secrets
RUN yum install unzip -y
RUN curl -fSL "$VAULT_URL" -o /bin/vault.zip
RUN unzip /bin/vault.zip -d /bin
ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]

entrypoint.sh 中的相关代码

# Login with Vault and get secrets

vault login -namespace $VAULT_NAMESPACE -method=aws role=my_role aws_access_key_id=$AWS_ACCESS_KEY_ID aws_secret_access_key=$AWS_SECRET_ACCESS_KEY aws_security_token=$AWS_SECURITY_TOKEN
vault read -namespace $VAULT_NAMESPACE some_kv

注意:$AWS_ACCESS_KEY_ID、$AWS_SECRET_ACCESS_KEY 和 $AWS_SECURITY_TOKEN 在运行时作为环境变量传入 Docker 容器。

当我运行命令时:

vault login -namespace $VAULT_NAMESPACE -method=aws role=my_role aws_access_key_id=$AWS_ACCESS_KEY_ID aws_secret_access_key=$AWS_SECRET_ACCESS_KEY aws_security_token=$AWS_SECURITY_TOKEN

我收到以下错误

Error authenticating: Put https://VAULT_URL/v1/auth/aws/login: x509: certificate signed by unknown authority

我已经验证我可以vault login使用 AWS 凭证成功地从本地计算机进行相同的调用。

我很清楚这是一个证书问题,但我不确定我需要采取哪些步骤来解决它。

我尝试过的事情:

像这样更新了 Dockerfile,其中 vault-cert.cer 是我使用证书导出向导从浏览器下载的文件

# Certificates
COPY src/vault-cert.cer $WSO2IS_HOME/vault-cert.cer
RUN yum install ca-certificates
RUN update-ca-trust force-enable
RUN cp vault-cert.cer /etc/pki/ca-trust/source/anchors
RUN update-ca-trust extract

我希望将 .cer 文件添加到文件系统将允许 Docker 容器信任我正在验证的 URL。

4

1 回答 1

0

这个命令解决了我的问题:

# Configure Trust for Vault Certificate RUN openssl s_client -connect $VAULT_HOST:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/pki/tls/certs/ca-bundle.crt

于 2019-01-11T16:21:13.783 回答