Docker容器内用wget安装Terraform出现GnuTLS SSL连接错误如何解决
报错场景
在Docker容器中使用wget工具安装Terraform时触发SSL连接报错,错误信息如下:
原文:GnuTLS: The TLS connection was non-properly terminated. Unable to establish SSL connection
翻译:GnuTLS库报错:TLS连接未正常终止,无法建立SSL连接
修复方案
按优先级从高到低尝试以下操作:
- 第一步:更新容器内根证书与基础工具
Debian/Ubuntu系容器执行:apt update && apt install -y ca-certificates wget
Alpine系容器执行:apk add --no-cache ca-certificates wget
执行完成后重新执行下载命令测试。 - 第二步:强制指定TLS版本解决兼容问题
部分旧版本GnuTLS和Terraform官方下载站点的TLS配置不兼容,可指定使用TLS1.2版本下载:wget --secure-protocol=TLSv1_2 [Terraform下载链接] - 第三步:替换为curl工具下载
curl的SSL兼容适配性优于默认带GnuTLS的wget,先安装curl:
Debian/Ubuntu系:apt install -y curl
Alpine系:apk add --no-cache curl
再执行下载:curl -O [Terraform下载链接] - 第四步:临时跳过证书校验(仅测试用,生产环境不推荐)
确认是证书校验问题后可临时加参数绕开校验:wget --no-check-certificate [Terraform下载链接] - 第五步:校验时间同步配置
容器系统时间和实际时间偏差过大时会触发证书有效性校验失败,启动容器时可挂载宿主机时间配置避免该问题:docker run -v /etc/localtime:/etc/localtime:ro [其他启动参数] 镜像名 - 第六步:配置代理规则
若容器所在网络需走代理访问外网,执行下载时可指定wget代理配置:wget -e use_proxy=yes -e http_proxy=http://代理地址:端口 -e https_proxy=http://代理地址:端口 [Terraform下载链接]
内容的提问来源于stack exchange,提问作者Taj
相关产品推荐
相关产品推荐

