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.
是不是相关的/有用的人..
答
我有this issue,它是由安装libcurl4-openssl-dev
和更新Rcurl
包到最近解决了吗?版本(1.95)
$ sudo apt-get install libcurl4-openssl-dev
$ R
> install.packages("RCurl")
你在R里试了什么? – hadley 2014-11-05 15:15:04
已更新,其中包含我的R代码 – Eluxoso 2014-11-06 20:30:02
您绝对不应该有'ssl.verifypeer = FALSE' – hadley 2014-11-06 23:10:40