Docker容器内执行curl遇SSL连接重置问题求助
WSL2 Docker容器访问公司内部API的SSL连接问题解决建议
针对你遇到的容器内curl API出现OpenSSL SSL_connect: Connection reset by peer错误,以下是几种可行的排查和解决方法:
切换容器网络为Host模式
让容器直接复用WSL2主机的网络栈,和WSL2环境的网络配置保持一致,避免Docker bridge网络的路由问题。启动容器时添加参数:docker run --network host <你的Astro Airflow镜像名>注意:Host模式下容器端口会与WSL2主机端口冲突,需提前调整Airflow的端口配置。
手动导入公司根证书
Astro镜像可能未包含公司内部CA证书,即使你更新过系统证书,容器内的证书池可能未同步。可以通过挂载本地证书并更新容器证书池:# 假设WSL2中公司CA证书路径为/usr/local/share/ca-certificates/company-ca.crt docker run -v /usr/local/share/ca-certificates/company-ca.crt:/usr/local/share/ca-certificates/company-ca.crt <你的Astro Airflow镜像名> sh -c "update-ca-certificates && airflow webserver"临时测试也可以直接在curl命令中指定CA证书:
curl --cacert /path/to/company-ca.crt https://wrdes.dev.lktr.com/sdsdss/ewf/report?reportName=XYZ调整TLS版本或加密套件
容器内OpenSSL默认的TLS版本或加密套件可能与公司API不兼容,尝试强制使用TLSv1.2:curl -v --tlsv1.2 https://wrdes.dev.lktr.com/sdsdss/ewf/report?reportName=XYZ或者指定兼容的加密套件:
curl -v --ciphers 'AES256-SHA' https://wrdes.dev.lktr.com/sdsdss/ewf/report?reportName=XYZ验证容器网络连通性
先在容器内ping API的IP(10.44.11.112),确认网络是否可达。如果ping不通,可能是:- WSL2的Docker网络未正确接入公司内网,检查WSL2是否继承了Windows的VPN连接(如果公司需要VPN)
- 容器IP不在公司API的访问白名单内,联系IT部门确认
同步代理配置
如果公司网络需要代理,WSL2内的代理环境变量未传递到容器,启动时添加代理变量:docker run -e HTTP_PROXY=http://<代理地址>:<端口> -e HTTPS_PROXY=http://<代理地址>:<端口> <你的Astro Airflow镜像名>若API属于内部无需代理的地址,需设置NO_PROXY:
docker run -e NO_PROXY=wrdes.dev.lktr.com,10.44.11.112 <你的Astro Airflow镜像名>
内容的提问来源于stack exchange,提问作者danD
相关产品推荐
相关产品推荐

