2

私はしばらくの間 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.

それは誰かに関連/役に立ちますか?..

4

1 に答える 1

2

この問題が発生しましたが、パッケージをインストールして最新バージョン (1.95) にlibcurl4-openssl-dev更新することで解決しましたRcurl

$ sudo apt-get install libcurl4-openssl-dev
$ R
> install.packages("RCurl")
于 2015-02-09T21:00:29.950 に答える