quantmod - SSL:无法在R中获得本地颁发者证书

问题描述 投票:0回答:2

我正在尝试使用R中的quantmod包来从雅虎获取财务数据。它适用于我的个人笔记本电脑(Mac和Win)。但是我无法在我的工作计算机上运行它(Win7)。

我的代码是:

getSymbols("JPM", src = "yahoo")

请注意它只适用于我公司的笔记本电脑。

这是错误代码:

Error in curl::curl_download(cu, tmp, handle = h) : 
SSL certificate problem: unable to get local issuer certificate

我试图通过以下方式解决问题:

  1. 安装httr
  2. 删除curlquantmod并重新安装
  3. 更新到R,RStudio,curlhttrRCurlquantmod的最新版本
  4. 安装openssl
  5. 设置ssl_verifypeer = 0L
  6. getSymbols之前添加以下内容 options(download.file.method = "wget", download.file.extra = c("--no-check-certificate"))

不幸的是,以上都没有。顺便说一句,从谷歌财经工作获取数据,但谷歌每个请求只提供约4000条记录。

我认为我们公司对SSL有一些限制,但我完全可以访问以https://开头的网站

此外,以下代码有效:

library('httr')    
content(GET('https://www.linkedin.com/in/lillyzhu'))

devtools::install_github

我花了一个星期来解决这个问题,但我没有取得任何进展。现在,我想知道是否可以修复它?任何想法都会有所帮助!

感谢所有的贡献者,有一个伟大的!附录:libcurlVersion()的输出

[1] "7.40.0"
attr(,"ssl_version")
[1] "OpenSSL/1.0.0o"
attr(,"libssh_version")
[1] "libssh2/1.4.3"
attr(,"protocols")
 [1] "dict"   "file"   "ftp"   
 [4] "ftps"   "gopher" "http"  
 [7] "https"  "imap"   "imaps" 
[10] "ldap"   "pop3"   "pop3s" 
[13] "rtmp"   "rtsp"   "scp"   
[16] "sftp"   "smtp"   "smtps" 
[19] "telnet" "tftp"  

如果您需要我的笔记本电脑的任何其他信息,请随时告诉我。

更新:我在我公司的笔记本电脑上测试该功能而无需登录VPN,它可以工作。所以任何想法让它在VPN内部工作?

r ssl url curl quantmod
2个回答
1
投票

问题是因为cURL默认使用OpenSSL。可以通过安装特殊版本的winSSL来修复使用cURL

Sys.setenv(LIBCURL_BUILD="winssl")
install.packages("https://github.com/jeroen/curl/archive/master.tar.gz", repos = NULL)

请参考此链接:

https://github.com/jeroen/curl/issues/122


1
投票

该错误通常是由过期或缺失的CA根证书捆绑引起的,但也可能在远程服务器使用自签名证书时发生。在任何一种情况下,cURL都无法验证远程服务器的证书并引发错误。

您可以使用以下命令禁用验证证书的要求:

library(httr)
httr::set_config(config(ssl_verifypeer = FALSE))

但是不建议这样做,因为它会产生安全漏洞。

© www.soinside.com 2019 - 2024. All rights reserved.