httr/curl中的SSL连接错误

httr/curl中的SSL连接错误,r,httr,R,Httr,我正试图使用httr访问一个开放API,但运气不好。每当我尝试: httr::GET("https://api.openaq.org/v1/countries") 我得到以下错误: Error in curl::curl_fetch_memory(url, handle = handle) : SSL connect error 然而,例如,到https的其他连接工作正常 httr::GET("https://httpbin.org/get") 以下是sessionInfo()的输

我正试图使用
httr
访问一个开放API,但运气不好。每当我尝试:

httr::GET("https://api.openaq.org/v1/countries")
我得到以下错误:

Error in curl::curl_fetch_memory(url, handle = handle) : 
   SSL connect error
然而,例如,到https的其他连接工作正常

httr::GET("https://httpbin.org/get")
以下是
sessionInfo()
的输出:

在终端,如果我运行
curl config--version
我会得到

libcurl 7.35.0
更新:我尝试过的事情
  • 确认这是适用于Ubuntu 14.04的libcurl3的最新版本
  • 使用中的
    openssl
    检查ssl证书
  • 已卸载/重新安装的
    curl
    RCurl
    httr
  • 确认此操作在终端上有效:
curl-v”https://api.openaq.org/v1/countries"

我无法理解命令行curl是如何工作的,但是R中的
curl
失败了

更多更新--
verbose
不起作用 我试图通过要求
httr
详细说明,从R获得更多信息。它会产生相同的错误:


httr::GET(“https://api.openaq.org/v1/countries,httr::verbose())
curl::curl\u fetch\u内存中出错(url,handle=handle):
SSL连接错误

httr::GET()相同https://api.openaq.org/v1/countries,httr::verbose(ssl=TRUE))
ssl握手失败。一些潜在原因:

  • 您使用gnutls而不是openssl编译。尝试:
    apt get install libcurl4 openssl dev
  • 您的libcurl已经过时,不支持服务器所需的TLS版本
      解决了这个问题(在@Jeroen和的帮助下)

      首先,我在终端中运行了以下操作:

      sudo apt get安装libcurl4 openssl dev

      然后在R中卸载并重新安装
      curl


      install.packages(“curl”)

      我也遇到了这个问题。在命令行中使用curl似乎可以很好地工作,但在R中不行。根据
      curl\u version()
      我使用的是7.22.0版。我无法重现这一点。这个错误还在发生吗?我怀疑SSLv3有问题。你能把
      curl::curl\u fetch\u内存(“https://api.openaq.org/v1/countries“,新句柄(verbose=T))
      谢谢@Jeroen。是的,我可以确认这是由于使用GnuTLS而不是OpenSSL时出现了一些问题。这个问题发生在我的笔记本电脑上,它使用的是curl包0.9.5和curl版本7.22.0,其中
      curl\u version()$ssl\u version
      显示它使用的是GnuTLS/2.12.14。在另一台具有相同curl包和版本的机器上,这一切似乎都是正常的,但是使用了OpenSSL/1.0.1。我想知道为什么。谢谢你,它帮助了我。
      libcurl 7.35.0