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

GitHub Actions中Ubuntu环境R包检查遇SSL连接错误求助

解决GitHub Actions Ubuntu环境下R代码SSL连接unsafe legacy renegotiation disabled错误

问题背景

以下R代码在Windows和macOS环境可正常执行,但在GitHub Actions的Ubuntu runner中下载文件时触发unsafe legacy renegotiation disabled错误:

tf <- tempfile()
this_url <- "https://webfs.oecd.org/piaac/puf-data/SAS/SAS7BDAT/prgusap1_2012.sas7bdat"
download.file( this_url , tf , mode = 'wb' )

尝试更换download.file替代方案、设置ssl.verifypeer=FALSE均无法解决问题。

问题原因

目标服务器使用了旧版TLS协商协议,而Ubuntu runner默认使用的新版OpenSSL(3.x及以上)为了安全,默认禁用了不安全的旧版协商机制,导致连接失败。ssl.verifypeer=FALSE仅关闭证书验证,无法解决协议不兼容的问题。

解决方案

方案1:修改OpenSSL配置,允许旧版协商

在GitHub Actions的Workflow文件(如r.yml)中,添加配置OpenSSL的步骤后再运行R脚本:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 其他步骤(如checkout、安装R依赖)...
      - name: Configure OpenSSL for legacy renegotiation
        run: |
          echo "Options = UnsafeLegacyRenegotiation" > ~/.openssl_legacy.cnf
          echo "OPENSSL_CONF=$HOME/.openssl_legacy.cnf" >> $GITHUB_ENV
      - name: Run R script
        run: Rscript your_script.R

方案2:使用curl命令绕过R的SSL处理

直接通过shell调用curl下载文件,避免R内置SSL客户端的限制:
修改R代码如下:

tf <- tempfile(fileext = ".sas7bdat")
this_url <- "https://webfs.oecd.org/piaac/puf-data/SAS/SAS7BDAT/prgusap1_2012.sas7bdat"
# curl的-L参数处理重定向,-o指定输出文件,shQuote避免路径/URL含特殊字符报错
system(paste0("curl -L -o ", shQuote(tf), " ", shQuote(this_url)))

# 后续可继续处理文件,比如用haven包读取SAS数据
# library(haven)
# df <- read_sas(tf)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:46:46