Я некоторое время играл с 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.
Итак, быстрый вопрос...
Как бы вы воспроизвели приведенную выше команду CURL в RCurl или httr?
Кстати, это на 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'
)
хттр:
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.
Это актуально/полезно для кого-то?..
ssl.verifypeer=FALSE
- person hadley   schedule 07.11.2014