R - 使用 HTTR 解析" SSL certificate problem: unable to get local issuer certificate"



我知道有很多类似的问题,例如

  • 无法使用CURL获取本地颁发者证书
  • 使用MailChimp';的SSL错误;s API

但我很难找到答案并将其应用于我的具体案例。这是我的MCVE:

library(httr)
url <- "http://www.ece.mcmaster.ca/~shirani/"
res <- try(http_status(GET(url,timeout(30))))

curl::curl_fetch_memory(url,handle=handle(中的错误:SSL证书问题:无法获取本地颁发者证书

我确信这意味着远程Web服务器正在使用我的系统无法识别的证书。我认为有两种解决方案,(1(告诉httr/RCurl/curl忽略问题并在不安全模式下操作(命令行标志-k/--insecure(或(2(获取并存储适当的证书。

设置"不安全"选项/忽略问题

这个问题的答案建议(对于PHP(

使用curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1)curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)

?httr:config()建议

通常,您只需要使用此函数来设置CURL选项(如果还没有有用的包装器(函数,如set_cookies、add_headers或证明…是真实的要有效地使用此功能,需要CURL知识和CURL选项。使用httr_options查看可用选项的完整列表。查看libcurl文档对于给定的选项,请使用curldocs。

如何将此建议付诸实践?

httr_options()提供

206             ssl_verifyhost             CURLOPT_SSL_VERIFYHOST  integer
207             ssl_verifypeer             CURLOPT_SSL_VERIFYPEER  integer

但是

res <- try(http_status(GET(url,timeout(max_time),
config=list(ssl_verifyhost=0, ssl_verifypeer=0))))

给出了相同的错误(包括我看到的唯一其他ssl_*选项ssl_verifystatus=0(。

获得正确的证书,或者麻烦网站维护人员

如果我宁愿正确地做事,而不忽视问题。我将如何着手(1(确定我需要什么证书,(2(在我的系统上安装它/在httr中使用它(我在Linux PopOS 18.04上(,(3(如果网站维护人员应该更新他们的证书,我将如何与他们进行一致通信?

我错误地使用了config。这似乎奏效了:

res <- http_status(GET(url,config(ssl_verifypeer=0)))

我仍然对一个更有原则的解决方案感兴趣(即,弄清楚如何安装和部署正确的证书(。

相关内容

最新更新