访问内部GitLab时报x509未知签名错误,如何配置Terraform使用证书认证?
解决内部GitLab Terraform提供者x509证书未知错误
第一步:获取内部GitLab实例的根CA证书
你可以通过两种方式获取可信根证书:
- 方法1:使用openssl命令行导出
执行以下命令直接导出站点完整证书链,保存为本地crt文件:
导出后可以手动保留文件末尾的根CA证书段即可。openssl s_client -connect admin-repo.[ORG DOMAIN].com:443 -showcerts < /dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > gitlab_internal.crt - 方法2:通过浏览器导出
- 用浏览器打开你的GitLab地址
https://admin-repo.[ORG DOMAIN].com - 点击地址栏的不安全提示,进入安全设置选择「查看证书」
- 切换到「详细信息」标签,选择证书链最顶层的根CA证书,选择导出,格式选PEM(后缀为.crt/.pem均可),保存到本地。
- 用浏览器打开你的GitLab地址
第二步:配置Terraform使用证书
优先选择第一种配置方式,无需修改系统全局证书设置:
方式1:直接在GitLab Provider配置中指定证书
修改你的provider块,添加ca_cert参数读取本地证书文件即可:
provider "gitlab" { token = var.token base_url = var.base_url ca_cert = file("${path.module}/gitlab_internal.crt") # 替换为你实际保存证书的路径 }
方式2:将证书加入系统可信CA列表
如果有多个工具需要信任该内部证书,可以配置系统级可信根CA,不同操作系统操作如下:
- Debian/Ubuntu 系列:
- 将导出的crt文件放入
/usr/local/share/ca-certificates/目录 - 执行命令
sudo update-ca-certificates生效
- 将导出的crt文件放入
- RHEL/CentOS/Fedora 系列:
- 将导出的crt文件放入
/etc/pki/ca-trust/source/anchors/目录 - 执行命令
sudo update-ca-trust extract生效
- 将导出的crt文件放入
- Windows:
- 双击crt文件,选择安装证书,存储位置选「本地计算机」
- 选择「将所有证书都放入下列存储」,浏览选择「受信任的根证书颁发机构」,确认完成安装
- MacOS:
- 双击crt文件,钥匙串访问选择「系统」完成添加
- 打开钥匙串访问,找到刚导入的证书,右键选「显示简介」->「信任」->「使用此证书时」选择「始终信任」,保存生效
临时测试方案(不推荐用于生产)
如果仅需要临时测试验证逻辑,可以跳过证书校验,在provider配置中添加insecure = true即可,该配置会存在中间人攻击风险,生产环境禁止使用:
provider "gitlab" { token = var.token base_url = var.base_url insecure = true }
内容的提问来源于stack exchange,提问作者user971741
相关产品推荐
相关产品推荐

