我有一个 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。