无法使用 AWS 身份验证连接到 Docker 容器中的 Hashicorp Vault - x509 证书错误
Can't connect to Hashicorp Vault in Docker container with AWS authentication- x509 certificate error
我有一个 Docker 容器,其中包含需要连接到 Vault 以检索 运行 服务的机密的服务。我的容器是 运行ning Linux CentOS
在我的 entrypoint.sh 脚本中 运行 在我的 Docker 容器中,我尝试使用 Vault CLI 检索 Vault 机密,然后使用 AWS 身份验证进行身份验证。
Docker文件中的相关代码:
# 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
我已验证我可以使用 AWS 凭据从我的本地计算机成功进行相同的 vault login
调用。
我很清楚这是一个证书问题,但我不确定需要采取什么步骤来解决它。
我尝试过的东西:
像这样更新了 Docker 文件,其中 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。
这个命令解决了我的问题:
# 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
我有一个 Docker 容器,其中包含需要连接到 Vault 以检索 运行 服务的机密的服务。我的容器是 运行ning Linux CentOS
在我的 entrypoint.sh 脚本中 运行 在我的 Docker 容器中,我尝试使用 Vault CLI 检索 Vault 机密,然后使用 AWS 身份验证进行身份验证。
Docker文件中的相关代码:
# 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
我已验证我可以使用 AWS 凭据从我的本地计算机成功进行相同的 vault login
调用。
我很清楚这是一个证书问题,但我不确定需要采取什么步骤来解决它。
我尝试过的东西:
像这样更新了 Docker 文件,其中 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。
这个命令解决了我的问题:
# 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