RCurl(或httr) - 指定证书信息

问题描述:

我一直在玩httr和RCurl一段时间,并正在努力指定一些证书信息。RCurl(或httr) - 指定证书信息

我有一个卷曲CLI命令工作得很好登录我到使用进行身份验证的自签名的证书网站(以及UNAME /密码),它看起来像这样...

curl -k -q -v --cert "../certs/foobar.pem" https://signon.foobar.com/certlogin -d "username=foo&password=bar" -H "X-Application: Curltest" 

这使我登录到foobar.com并返回一个会话令牌。

如果我使用相应的.crt证书文件并使用--key选项添加密钥,则相同的命令将起作用。

我试图用RCurl或httr做同样的事情,并不断收到一个错误,指出证书是错误的。请记住,我知道证书是好的(因为CLI命令起作用),我认为这是因为我在RCurl中错误地指定了证书。

因此,快速的问题...

你将如何重现上述RCurl或HTTR给出的curl命令?

顺便说一句,这是在Ubuntu上 - 所以不应该与Mac OS X的有10.9 +

非常感谢

涉及到的问题很多人的Eluxoso (第一次海报 - 是不错.. ..)

这里是我的(可能是非常不雅&肯定非功能性的)代码

RCurl:

Library(RCurl) 
url <- "https://signon.foobar.com/certlogin" 
uname <- "foo" 
pswd <-"bar" 
headers <- list("X-Application" = "Curltest") 
opts=curlOptions(verbose=TRUE, 
       httpheader=headers, 
       cainfo="../certs/foobar.pem", 
       ssl.verifypeer=FALSE) 
postForm(url, 
     "username" = uname, "password"=pswd, 
     .opts=opts, 
     style='POST' 
) 

HTTR:

library(httr) 
cafile="../certs/foobar.pem" 
resp<-POST("https://signon.foobar.com/certlogin", 
      body = list(username="foo", password = "bar"), 
      add_headers("X-Application" = "Curltest"), 
      verbose(), 
      encode = "form", 
      config(cainfo = cafile, ssl.verifypeer=FALSE)) 
content(resp,"text") 

已经用于证书我仍然得到同样的服务器响应一个完整路径,尽管卷曲CLI命令工作。 在HTTP请求我注意到了这一点:

SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway. 

是不是相关的/有用的人..

+0

你在R里试了什么? – hadley 2014-11-05 15:15:04

+0

已更新,其中包含我的R代码 – Eluxoso 2014-11-06 20:30:02

+0

您绝对不应该有'ssl.verifypeer = FALSE' – hadley 2014-11-06 23:10:40

我有this issue,它是由安装libcurl4-openssl-dev和更新Rcurl包到最近解决了吗?版本(1.95)

$ sudo apt-get install libcurl4-openssl-dev 
$ R 
> install.packages("RCurl")