terraform x509:由未知机构签署的证书

问题描述 投票:0回答:3

我使用 Terraform 作为 DevOps 管道工具的一部分,最近我更换了我的 PC,然后 terraform 停止工作,我的 Terraform 在 docker 桌面容器内运行,新 PC 有 Windows 11,我可以从中运行 terraform没有遇到认证问题,但 docker 无法初始化 Terraform,我收到此错误

terraform x509: certificate signed by unknown authority

enter image description here

我尝试将过去的手动证书从主机复制到容器,但没有任何帮助。

terraform containers x509
3个回答
1
投票

如果您在使用 vSphere Terraform Provider 时看到此问答,并且您已将根 CA 证书添加到您的操作系统,请确保还将所有中间 CA 证书添加到您的操作系统。通常,您不会作为客户端执行此操作,但 Terraform 似乎需要这样做。我没有找到任何明确提到这一点的文档,但您可以从这些文档中派生它,这些文档描述了如何设置自定义 Terraform 容器,其中明确添加了中间 CA 证书:

FROM ubuntu:bionic

# Install required software for Terraform Enterprise.
RUN DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -y --no-install-recommends awscli ca-certificates curl daemontools git-core iproute2 netcat-openbsd openssh-client psmisc redis-tools ssh sudo unzip wget

# Include all necessary CA certificates.
ADD example-root-ca.crt /usr/local/share/ca-certificates/
ADD example-intermediate-ca.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates

确保每当您将证书添加到证书存储时,您也会使用

update-ca-certificates
(Debian/Ubuntu) 或
update-ca-trust
(CentOS/RHEL) 将它们合并到您的证书存储中。


0
投票

通过向容器 /etc/ssl/certs/ca-certificates.crt 添加证书来解决 –


0
投票

只是分享我在 Gitlab 管道中的表现。如果您要使用 Gitlab CI/CD 管道对部署在 kubernetes 集群中的资源进行更改,请在 Gitlab 中定义 CI/CD 变量(即 CERT_B64)并输入值。然后在您的 terraform 部署作业中使用

before_script
中的以下脚本。

terraform-deploy:
  extends:
    - .base-terraform
  stage: deploy
  variables:
    AWS_ACCESS_KEY_ID: $S3_ACCESS_KEY
    AWS_SECRET_ACCESS_KEY: $S3_SECRET_KEY
    AWS_ENDPOINT_URL_S3: $S3_ENDPOINT
  before_script:
    - apk add --no-cache gettext ca-certificates
    - echo -n $CERT_B64 | base64 -d > /usr/local/share/ca-certificates/ca.crt
    - cat /usr/local/share/ca-certificates/ca.crt >> /etc/ssl/certs/ca-certificates.crt
    - update-ca-certificates

检查 Terraform 运行失败并出现“x509:证书由未知机构签名”错误 以获取详细说明。

© www.soinside.com 2019 - 2024. All rights reserved.