私はしばらくの間 httr と RCurl をいじっていて、いくつかの証明書情報を指定するのに苦労しています。
認証に自己署名証明書(およびuname / pwd)を使用するWebサイトにログインするのに問題なく機能するCurl CLIコマンドがあります。これは次のようになります...
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 (初めてのポスター - いいですね....!)
これが私の(おそらく非常に洗練されておらず、機能していない)コードです
RURL:
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")
CURL CLI コマンドが機能しているにもかかわらず、証明書のフル パス名を使用しても、同じサーバー応答が得られます。HTTP リクエストで、次のことに気付きました。
SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
それは誰かに関連/役に立ちますか?..