我一直在使用 httr 和 RCurl 并且正在努力指定一些证书信息。
我有一个 Curl CLI 命令,可以很好地让我登录到使用自签名证书进行身份验证(以及 uname/pwd)的网站,它看起来像这样......
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(第一次海报 - 很好......!)
这是我的(可能非常不优雅且肯定不起作用)代码
网址:
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'
)
网址:
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")
尽管 CURL CLI 命令有效,但使用证书的完整路径名后,我仍然得到相同的服务器响应。在 HTTP 请求中,我注意到了这一点:
SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
这对某人是否相关/有帮助?