当前位置: 首页 > 知识库问答 >
问题:

无法使用AWS身份验证连接到Docker容器中的hashi corp Vault-x509证书错误

房学文
2023-03-14

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

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

来自多克文件的相关代码:

# 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_访问_密钥_ID、$AWS_机密_访问_密钥和$AWS_安全_令牌在运行时作为环境变量传递到 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 凭证从本地计算机成功进行相同的保管库登录调用

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

我尝试过的事情:

像这样更新了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。

共有1个答案

麻宾白
2023-03-14

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

# 配置保管库证书的信任运行打开s_client -连接 $VAULT_HOST:443

 类似资料:
  • 我已经按照文档中的说明配置了MongoDB服务器https://docs.mongodb.com/manual/core/security-x.509/我使用mongo shell连接,工作正常。 接下来,我尝试连接到相同的服务器form c#驱动程序,但引发超时异常。下面是我的代码 我通过MongoDB服务器日志,我可以看到下面的错误 2017-04-10T11:18:21.559 0530 I

  • 问题内容: 我试图连接到http://bluesql.net上的mySQL数据库,但是当我尝试连接时,出现此错误: 我已经研究过了,它与MySQL 4.1之前使用的一些旧密码方案有关。较新的版本可以选择使用旧密码,我已阅读过此密码可能会导致此问题。 我正在运行php 5.3,并与mySQLi(新的mysqli(…))连接。我希望我可以在代码中做一些事情以连接到bluesql.net上的数据库- 显

  • 我想在讲Grails的REST中设置基于证书的登录身份验证。 按照Burt Beckwith的文档,我使用Spring Security插件(spring-security-core:2.0-RC3)来设置X509身份验证: 生成证书文件和Tomcat配置似乎有点棘手,但已经在另一个答案中指出。我这样做了,并使用当前标准配置Tomcat 7,首先是keystoreFile、keystorePass

  • 我试图在kubernetes下的linux docker容器中使用windows身份验证。 我遵循以下设置:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.1 应用程序在. net core3中,具有nuget Microsoft. AspNetCo

  • 问题内容: 是否有人对如何使用HTTPClient 4.0.1通过x509证书执行客户端身份验证有任何友好的提示? 感谢您的时间。 问题答案: 这是一些代码,助您一臂之力。该是包含客户端证书的对象。如果服务器使用的是自签名证书,或者包含的cacerts文件中的JVM认可的不是CA所签名的证书,则需要使用。否则,要使用默认的cacerts文件,请传递给truststore参数。

  • 我有一个用Java Spring写的应用程序运行在Wildfly 10上。我已经使用我的RootCA和客户端证书设置了基本的x509身份验证。 基于客户端的证书CN,我可以处理多个用户角色。 我想实现的是如何动态选择应该使用的客户端证书。访问https时会显示一个对话框(这是一个系统对话框——来自火狐)。但是这个对话框只显示一次,即使注销后,对话框也不会再次显示,最后一个客户端证书会自动选择。 即