Я знаю, что существует много подобных вопросов, например,
, но мне не удается найти ответы на свои вопросы и применить их к конкретному делу c. Вот мой MCVE:
library(httr)
url <- "http://www.ece.mcmaster.ca/~shirani/"
res <- try(http_status(GET(url,timeout(30))))
Ошибка в curl :: curl_fetch_memory (url, handle = handle): проблема с сертификатом SSL: невозможно получить сертификат локального эмитента
I Я уверен, что это означает, что удаленный веб-сервер использует сертификат, который не распознается моей системой. Я считаю, что есть два решения: (1) сказать httr
/ RCurl
/ curl, чтобы игнорировать проблему и работать в небезопасном режиме (флаг командной строки -k
/ --insecure
), или (2) получить и сохранить соответствующий сертификат где-то.
установка «небезопасных» опций / игнорирование проблемы
Ответ на этот вопрос предлагает (для PHP)
используйте curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1)
и curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)
?httr:config()
предлагает
Как правило, вам нужно использовать эту функцию только для прямой установки параметров CURL, если нет уже полезная функция-обертка, такая как set_cookies, add_headers или authenticate. Для эффективного использования этой функции требуются некоторые знания опций CURL и CURL. Используйте httr_options, чтобы увидеть полный список доступных опций. Чтобы просмотреть документацию по libcurl для данной опции, используйте curl_docs.
Как мне go применить этот совет на практике?
httr_options()
предоставляет
206 ssl_verifyhost CURLOPT_SSL_VERIFYHOST integer
207 ssl_verifypeer CURLOPT_SSL_VERIFYPEER integer
, но
res <- try(http_status(GET(url,timeout(max_time),
config=list(ssl_verifyhost=0, ssl_verifypeer=0))))
выдает ту же ошибку (как и в случае ssl_verifystatus=0
, единственный другой вариант ssl_*
, который я вижу).
получение правильных сертификатов, или хлопот администратор веб-сайта
Если бы я предпочел сделать все правильно и не игнорировать проблемы. Как мне go узнать (1) определить, какой сертификат мне нужен, (2) установить его в моей системе / использовать его в httr
(я нахожусь на Linux PopOS 18.04), (3) связно связаться с сопровождающий веб-сайт, если они должны обновить свой сертификат?