我在Windows上使用R。与一般的安全网站进行通讯时,我没有遇到任何问题。我试图通过getURL(url)与特定的SECURED网站(我的银行)进行通信(但失败)。 (手动登录到该站点没有问题)。这是“ R”代码:
library(RCurl) ; options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
url <- "https://hb2.bankleumi.co.il/uniquesig4e0824291ffbe1b42058d6558ed87217/uniquesig0/InternalSite/CustomUpdate/eBank_ULI_Login.asp?resource_id=C66B095BD60649D18ECB79F04C657517&login_type=2&site_name=leumi&secure=1&URLHASH=da2ded08-57dd-488c-94ff-34629781f5fb&orig_url=https%3a%2f%2fhb2.bankleumi.co.il%2fE%2flogin.html"
getURL(url)
traceback()
生成以下错误和traceback()函数调用链:
Error in function (type, msg, asError = TRUE) :
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
5: fun(structure(list(message = msg, call = sys.call()), class = c(typeName,
"GenericCurlError", "error", "condition")))
4: function (type, msg, asError = TRUE)
{
if (!is.character(type)) {
i = match(type, CURLcodeValues)
typeName = if (is.na(i))
character()
else names(CURLcodeValues)[i]
}
typeName = gsub("^CURLE_", "", typeName)
fun = (if (asError)
stop
else warning)
fun(structure(list(message = msg, call = sys.call()), class = c(typeName,
"GenericCurlError", "error", "condition")))
}
(35L, "error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure", TRUE)
3: .Call("R_curl_easy_perform", curl, .opts, isProtected, .encoding,
PACKAGE = "RCurl")
2: curlPerform(curl = curl, .opts = opts, .encoding = .encoding)
1: getURL(url)
我也试过
getURL(url, ssl.verifypeer = FALSE)
并得到相同的错误。从url字符串看起来好像问题出在预期的唯一签名上。有没有办法通过SSL / RCurl / R修复它?
最佳答案
错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败
这是尝试使用除RC4以外的任何其他密码连接到服务器时得到的消息。该服务器仅支持被认为已损坏的RC4-SHA和RC4-MD5。我猜R默认情况下禁用了RC4支持。您可以尝试通过将"ssl.cipher.list" option设置为“ RC4-SHA”来启用它。
使用特定的SECURED网站(我的银行)
我认为您需要质疑银行的安全性,如果银行提供的所有密码都是被认为已损坏的密码。另请参见report from SSLLabs,因为该问题以及更多的安全性问题,其等级为B。
关于r - https:sslv3警报来自getURL()的握手失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30202666/