我在获取时遇到问题RCurl功能getURL
访问使用自签名证书的服务器上的 HTTPS URL。我在 Mac OS X 10.9.2 上运行 R 3.0.2。
我已阅读FAQ http://www.omegahat.org/RCurl/FAQ.html和卷曲页面 http://curl.haxx.se/docs/sslcerts.html就此主题而言。这就是我的立场:
- 我已将证书的副本保存到磁盘(~/cert.pem)。
- 我已经能够使用这个完全相同的文件使用 python-requests 和“验证”选项连接到服务器,并成功。
- 命令行上的curl似乎忽略了--cacert选项。在使用 Mac OS X“钥匙串访问”应用程序将证书标记为受信任后,我成功地使用它访问了该网站。
-
RCurl顽固地拒绝连接网站,代码如下:
getURL("https://somesite.tld https://somesite.tld", verbose=T, cainfo=normalizePath("~/cert.pem"))
这是我得到的输出:
* Adding handle: conn: 0x7f92771b0400
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 38 (0x7f92771b0400) send_pipe: 1, recv_pipe: 0
* About to connect() to somesite.tld port 443 (#38)
* Trying 42.42.42.42...
* Connected to somesite.tld (42.42.42.42) port 443 (#38)
* SSL certificate problem: Invalid certificate chain
* Closing connection 38
当我测试两个卷曲时--cacert
选项和上面的 RCurl 代码在 Linux VM 中具有相同的 cert.pem 文件和完全相同的 URL,它运行得很好。
因此,在 Linux 和 Mac OS X 上进行相同的测试,并且只有在 Mac OS X 上它们才会失败。即使将证书添加到钥匙串也不起作用。
唯一有效的是使用ssl.verifypeer=FALSE
,但出于安全原因我不想这样做。
我在这里没有主意了。其他人对如何使其发挥作用有任何建议吗?
你可以试试:
library ("RCurl")
URL1 <- "https://data.mexbt.com/ticker/btcusd"
getURL(URL1,cainfo=system.file("CurlSSL","cacert.pem",package="RCurl"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)