Ошибка при запуске пакета weathercan — фатальное оповещение SSL / TLS (например, сбой рукопожатия))

#r #ssl #dplyr #purrr #handshake

#r #ssl #dplyr #муррр #рукопожатие

Вопрос:

Я запускаю пакет данных «weathercan» (https://cran.r-project.org/web/packages/weathercan/index.html; https://github.com/ropensci/weathercan ) и продолжайте получать ошибку при попытке получить данные с веб-сайта исторических данных о погоде в области окружающей среды и изменения климата. Я переустановил пакет, я даже переустановил R и RStudio после удаления всего R из моей системы, но ошибка сохраняется.

Пакет работает нормально, когда я просматриваю станции, например,

stations_search(координаты = c(44.140125, -80.363136), dist = 20, интервал = «день»)

Я получаю: введите описание изображения здесь

Но всякий раз, когда я пытаюсь получить данные, я получаю сообщение об ошибке. Например:

Station_data <- weather_dl(station_ids = 4497, start = «2000-01-01», end = «2002-05-30», интервал = «день»)

ВОЗВРАТ:

Ошибка: проблема с mutate() вводом html . x schannel: сбой следующей инициализации SecurityContext: SEC_E_ILLEGAL_MESSAGE (0x80090326) — эта ошибка обычно возникает при получении фатального предупреждения SSL / TLS (например, сбой рукопожатия). я ввожу html purrr::map(...) .

введите описание изображения здесь

Запустите rlang::last_error() , чтобы узнать, где произошла ошибка, укажите это:

<ошибка / dplyr:::mutate_error> Проблема с mutate() вводом html . x schannel: сбой следующей инициализации SecurityContext: SEC_E_ILLEGAL_MESSAGE (0x80090326) — эта ошибка обычно возникает при получении фатального предупреждения SSL / TLS (например, сбой рукопожатия). я ввожу html purrr::map(...) . Обратная трассировка:

  1. weathercan::weather_dl(…)
  2. base::.handleSimpleError(…)
  3. dplyr:::h(simpleError(сообщение об ошибке, вызов)) Запустите rlang::last_trace() , чтобы увидеть полный контекст.

Все это выходит за рамки моего понимания, поэтому я застрял здесь.

Любая информация была бы полезна.

Спасибо

Ответ №1:

[Обновление 2020-10-17]

Об этом решении также сообщалось в связи с проблемой weathercan

Похоже, что curl использует два серверных сервера SSL для Windows: OpenSSL и Windows Secure Channel. По умолчанию curl использует защищенный канал Windows, который должен быть лучшим, но не обладает полной функциональностью OpenSSL (подробнее).

Я предполагаю, что на сервере ECCC что-то изменилось, что требовало функциональности, не предоставляемой Windows Secure Channel. Когда я заставил свою платформу тестирования Windows (AppVeyor) использовать OpenSSL, у меня больше не было проблем.

Если вы хотите попробовать это, вам нужно будет добавить следующее в свой .Файл Renviron (который загружается во время запуска R):

CURL_SSL_BACKEND=openssl

Если вы не уверены, как отредактировать свой .Файл Renviron, вы можете использовать usethis пакет, чтобы найти / создать и открыть его для вас (после перезапуска R):

 install.packages("usethis")
usethis::edit_r_environ()
  

Отказ от ответственности: я не думаю, что для этого есть недостатки безопасности, но я ни в коем случае не специалист по сети!


[Оригинальный ответ]

Я разработчик пакета weathercan. К сожалению, у меня есть для вас некоторые подробности, но не совсем решение.

Я пытался отследить причины этой проблемы. Из того, что я вижу, на самом деле это проблема между R и сервером ECCC, которая (пока) появляется только в Windows, но не для всех (я запускаю Ubuntu 20.04 и Windows 10 и не могу ее воспроизвести, но другие в Windows 10 и 8 столкнулись с проблемой).

Вы можете следить за обсуждением проблемы, о которой сообщалось, здесь: https://github.com/ropensci/weathercan/issues/104

Причина, по которой мы считаем, что это не является строго проблемой weathercan, заключается в том, что если пользователи с этой проблемой пытаются напрямую загрузить файл ECCC, например,

read.csv("https://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csvamp;stationID=51097amp;timeframe=1amp;submit=Download+Dataamp;Year=2020amp;Month=10")

они сталкиваются с аналогичной проблемой (и read.csv() это функция из пакета utils).

Комментарии:

1. Привет, доктор ЛаЗерте, спасибо за информацию. Я должен был добавить в сообщение, что я использовал пакет на офисном компьютере (Windows 10), и он работал нормально. Ошибка возникает только на моем ноутбуке (Windows 7). Я подумал, что проблема может быть в моей домашней сети, поэтому я вошел на сервер McMaster из дома через VPN и получил те же ошибки, что и раньше. И да, запуск вашего примера работает на моем офисном компьютере, но не на моем ноутбуке. Кстати, спасибо за создание этого пакета! Навигация по веб-сайту ECCC может быть затруднена.

2. Тьфу, это так расстраивает, я понятия не имею, почему с некоторыми компьютерами все в порядке, а с некоторыми нет. Я опубликую ответ здесь, если разберусь.

3. Обновил ответ возможным решением!