【问题标题】:devtools::install_github() - Ignore SSL cert verification failuredevtools::install_github() - 忽略 SSL 证书验证失败
【发布时间】:2023-07-28 10:59:01
【问题描述】:

我正在尝试让 devtools::install_github() 在 Windows 7 上的公司代理后面工作。

到目前为止,我必须执行以下操作:

> library(httr)
> library(devtools)
> set_config(use_proxy("123.123.123.123",8080))
> devtools::install_github("rstudio/ggvis")

Installing github repo ggvis/master from rstudio
Downloading master.zip from https://github.com/rstudio/ggvis/archive/master.zip
Error in function (type, msg, asError = TRUE)  : 
  SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

显然,我们有某种证书服务器用我们自己的公司 SSL 证书替换 SSL 证书(通过转到 https://github.com 并检查证书来确认)。

无论如何,只是想知道是否有办法忽略该证书错误并继续安装?

【问题讨论】:

  • 这可能不是最好的解决方案,但如果一切都失败了,从 github repo 下载 zip 并在本地安装是一个可接受的解决方案吗?
  • 好主意 - 我什至没有考虑过。仍然非常希望不必这样做。
  • 试试set_config( config( ssl.verifypeer = 0L ) )
  • 它有效。谢谢!!你想把它变成答案吗?
  • @jdharrison 找不到函数“set_config”

标签: r rcurl devtools


【解决方案1】:

解决此问题的一种方法是将CURLOPT_SSL_VERIFYPEER 设置为false。此选项确定 curl 是否验证对等方证书的真实性。值为 1 表示 curl 验证; 0(零)表示没有。 http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html

相关选项需要传递给RCurl。在RCurl 中,CURLOPT_ 被删除了小写字母,下划线更改为.

set_config( config( ssl.verifypeer = 0L ) )

在使用httr时会将相关选项传递给RCurl

更新:

自编写此答案以来,httr 已从 RCurl 作为基础依赖项移至 curl 包。现在指定了 cURL 选项 带下划线,所以上面是:

set_config( config( ssl_verifypeer = 0L ) )

httr的当前版本中。

【讨论】:

  • 升级 Ubuntu 和 R 后必须更改 ssl.verifypeer -> ssl_verifypeer。
  • @jdharrison 找不到函数“set_config”
  • 您必须先加载httr 包,然后再尝试在此处使用 set_config sn-p。
【解决方案2】:

我厌倦了@jdharrisonbut 方法,但它对我不起作用。

避免使用 https 连接的快速解决方法是将 https 替换为 http。你通过这种方法从 cran 安装一个包。

install.packages("http://cran.r-project.org/src/contrib/ggvis_0.4.4.tar.gz", repo=NULL, type="source")

【讨论】: