Linux下TensorBoard 2.9.1访问AWS S3报curl 77 SSL证书错误
TensorBoard 2.9.1 访问AWS S3报Curl 77 SSL证书错误解决方案
问题根因
TensorFlow/TensorBoard 2.9.1内置的S3文件系统模块使用编译时绑定的libcurl实现S3请求,不会读取CURL_CA_BUNDLE环境变量,也不会默认复用AWS CLI的证书配置,代理环境下很容易因为证书路径识别失败、权限不足触发错误码77。
解决步骤
- 配置TF S3模块专属证书环境变量
同时传入三个证书路径变量兼容不同编译版本的读取逻辑,替换命令里的证书路径为你的ca.crt绝对路径:AWS_LOG_LEVEL=1 \ AWS_DEFAULT_PROFILE=myprofile \ AWS_REGION=eu-west-1 \ AWS_CA_BUNDLE=/你的证书绝对路径/ca.crt \ CURL_CA_BUNDLE=/你的证书绝对路径/ca.crt \ S3_CA_BUNDLE=/你的证书绝对路径/ca.crt \ tensorboard --logdir=s3://mybucket/tensorboard-output/ - 修复证书文件权限
执行命令给证书文件添加全局读权限,避免TensorBoard运行用户无权限读取证书:
不要将证书存放在root专属目录、加密目录下,确保证书文件为完整PEM格式,无内容损坏。chmod 644 /你的证书绝对路径/ca.crt - 测试环境临时绕过方案
仅在内网测试场景下可使用,生产环境禁止开启:启动命令中添加S3_DISABLE_SSL_VERIFY=1环境变量,关闭SSL证书校验。 - 虚拟环境兼容处理
如果使用conda/venv虚拟环境安装的TensorFlow,虚拟环境会自带独立CA证书bundle,路径通常为虚拟环境根目录/etc/ssl/certs/ca-certificates.crt,将你的自定义CA证书内容追加到该文件末尾后重启TensorBoard即可。
补充:如果配置后仍提示签名相关警告,先执行
date命令确认系统时间与UTC时间偏差不超过15分钟,时间偏移会导致S3签名校验失败。
内容的提问来源于stack exchange,提问作者Ridane
相关产品推荐
相关产品推荐

