我在使用 RCurl 函数getURL
访问使用自签名证书的服务器上的HTTPS URL时遇到问题。我在Mac OS X 10.9.2上运行R 3.0.2。
我已阅读有关该主题的FAQ和curl page。所以这就是我的立场:
RCurl顽固地拒绝使用以下代码连接到网站:
getURL(“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
当我在具有相同cert.pem文件和完全相同URL的Linux VM中使用--cacert
选项和上面的RCurl代码测试curl时,它完美地工作。
Linux和Mac OS X上的测试相同,只有在Mac OS X上才会失败。即使将证书添加到钥匙串也不起作用。
唯一可行的方法是使用ssl.verifypeer=FALSE
,但出于安全原因,我不想这样做。
我在这里没有想法。其他人对如何使其发挥作用有任何建议吗?