在 macOS 上使用 httr::GET() 会产生证书错误

Using httr::GET() on macOS produces certificate error

尝试在 macOS 上使用 httr 访问 API 会产生证书错误。

httr::GET("https://unstats.un.org/SDGAPI/v1/sdg/Indicator/List")
#> Error in curl::curl_fetch_memory(url, handle = handle): SSL certificate problem: certificate has expired

然而,运行 这在多台 Windows 机器上是成功的,除了安装 httr 和 运行 上面的代码(它不应该需要证书)。是服务器端出于某种原因阻止访问还是我可以调整的客户端?我无法在网上找到有关 httr 和 macOS 的一般证书问题的任何信息。

我可以使用 httr 成功访问这台机器上的其他 API,所以这让我相信这是一个服务器端问题,但没有足够的经验或知识来我自己完全解决了这个问题。

以下是我的会话信息以供参考。感谢您提供的任何帮助。

会话信息:

#> R version 4.0.0 (2020-04-24)
#> Platform: x86_64-apple-darwin19.4.0 (64-bit)
#> Running under: macOS Catalina 10.15.4
#> 
#> Matrix products: default
#> BLAS/LAPACK: /usr/local/Cellar/openblas/0.3.9/lib/libopenblasp-r0.3.9.dylib
#> 
#> locale:
#> [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> loaded via a namespace (and not attached):
#>  [1] Rcpp_1.0.4.6    digest_0.6.25   R6_2.4.1        magrittr_1.5   
#>  [5] evaluate_0.14   highr_0.8       httr_1.4.1      rlang_0.4.6    
#>  [9] stringi_1.4.6   curl_4.3        rmarkdown_2.1   tools_4.0.0    
#> [13] stringr_1.4.0   xfun_0.14       yaml_2.2.1      compiler_4.0.0 
#> [17] htmltools_0.4.0 knitr_1.28

我从昨天开始就遇到了完全相同的问题。查找后,发现一个通用根 CA 证书已于 5 月 30 日过期(请参阅此 )。一般来说,解决我的错误的方法是强制Curl(支持httr功能)忽略证书:

set_config(config(ssl_verifypeer = FALSE))
options(RCurlOptions = list(ssl_verifypeer = FALSE))
options(rsconnect.check.certificate = FALSE)

我对服务器问题几乎一无所知。但这对我有用,所以我希望对你也有用!