You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chef apt_repository执行失败 出现SSL证书验证错误问题咨询

根因说明

该报错是Chef 12.19.36内置的根证书库版本过旧导致:postgresql.org的SSL证书使用了近年更新的根证书机构签发,而停止维护的Chef 12版本内置CA列表中没有对应根证书,因此拉取APT源GPG密钥时无法完成SSL校验,触发apt_repository资源执行失败。

解决方案

方案1(优先推荐,无安全风险)

调整cookbook逻辑,绕开远程拉取密钥的流程:

  1. 提前将postgresql官方GPG公钥ACCC4CF8.asc下载后存放到对应cookbook的files/default目录下
  2. 在调用apt_repository资源前,先通过cookbook_file资源将密钥上传到节点本地可信密钥目录
  3. 配置apt_repository时直接指定本地密钥路径即可,参考代码:
# 上传本地存储的GPG密钥到节点可信目录
cookbook_file '/etc/apt/trusted.gpg.d/postgresql.asc' do
  source 'ACCC4CF8.asc'
  mode '0644'
end

# 配置PostgreSQL APT源
apt_repository 'postgresql' do
  uri 'http://apt.postgresql.org/pub/repos/apt/'
  distribution "#{node['lsb']['codename']}-pgdg"
  components ['main']
  key '/etc/apt/trusted.gpg.d/postgresql.asc' # 直接使用本地密钥,不走HTTPS远程拉取
end

方案2(次推荐,影响范围小)

单独更新Chef内置的根证书库:
将节点系统中已更新的系统根证书直接替换Chef内置的CA证书文件,默认路径为/opt/chef/embedded/ssl/certs/cacert.pem,可以在cookbook中添加逻辑批量更新所有节点的该文件,后续所有Chef发起的HTTPS请求都会使用新的根证书完成校验。

方案3(临时应急,不建议长期使用)

临时关闭Chef全局SSL校验:
在chef-solo的配置文件solo.rb中添加配置ssl_verify_mode :verify_none,即可跳过所有HTTPS请求的证书校验,故障恢复后建议尽快替换为更安全的方案避免安全风险。

方案4(长期迭代方案)

升级Chef Client版本到14.x及以上的LTS版本:
Chef 12属于已经停止维护的旧版本,升级到仍在维护期的LTS版本后,内置根证书库会同步更新,不会再出现同类旧根证书不兼容问题。


内容的提问来源于stack exchange,提问作者Parepallykiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:57:06