首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTR软件包: SSL证书错误,SSL3_GET_SERVER_CERTIFICATE

HTTR软件包: SSL证书错误,SSL3_GET_SERVER_CERTIFICATE
EN

Stack Overflow用户
提问于 2015-02-17 08:43:02
回答 1查看 6.9K关注 0票数 2

在试图使用R中的HTTR包和GET()函数时,我面临着一个挑战:

代码语言:javascript
复制
pg2 = GET("http://httpbin.org/basic-auth/user/passwd", authenticate("user","passwd"))

我得到了以下错误:

代码语言:javascript
复制
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

我在网上搜索,发现我需要使用以下命令行更新.Rprofile文件:

代码语言:javascript
复制
options(RCurlOptions = list(verbose = FALSE, capath = system.file("CurlSSL", "cacert.pem", package = "RCurl"), ssl.verifypeer = FALSE))

但是它仍然不起作用,我一直收到同样的错误信息。

同样,当我尝试下面的代码时

代码语言:javascript
复制
> HEAD("https://www.google.com", verbose())
  • 即将连接()到www.google.com端口443 (#0)
  • 尝试173.194.32.211..。*连接
  • 连接到www.google.com (173.194.32.211)端口443 (#0)
  • 成功设置证书验证位置:
  • C:/Users/malek.safa/Documents/R/win-library/3.0/httr/cacert.pem CAfile: CApath:无
  • SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败
  • 关闭函数中的连接#0错误(类型,msg,asError = TRUE):SSL证书问题,验证CA证书是否正常。详细信息:错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败

您可以看到它仍然在cacert.pm文件中查找CA。

EN

回答 1

Stack Overflow用户

发布于 2015-02-22 17:37:51

我花了大约五个小时玩卷发和RCurl。我能让它发挥作用。你想要的选项是cainfo,而不是capath。Capath告诉RCurl在哪里查找证书文件。Cainfo指定一个文件。

这对我适用于RCurl。

代码语言:javascript
复制
library(RCurl)
cer_file <- "/home/user/curltest/cacert.pem"
server_url <- "some_server"
getURL(server_url, cainfo=cer_file)

现在的问题是如何让httr理解这个设置。文档讨论了默认的ca_cert,但没有解释如何使用不同的证书。在我的例子中,我连接到一个不会在默认证书中的intranet站点。答案在于config.R。Httr允许我们像下面所做的那样设置RCurl配置选项。

代码语言:javascript
复制
cer_file <- "/home/me/curltest/cacert.pem"
GET(login_url, config=list(cainfo=cer_file))

如果您正在连接互联网,您可能只需要更新HTTR附带的默认仙人掌。自述文件向您展示了如何做到这一点。这样,您就不需要在每个调用中指定证书。

代码语言:javascript
复制
setwd("path to httr package")
GET("https://raw.githubusercontent.com/bagder/ca-bundle/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt",
write_disk("inst/cacert.pem", overwrite = TRUE))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28557831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档