Отключение по HTTPS с Nodemcu

Я использую следующую сборку:

NodeMCU custom build by frightanic.com
.branch: master
.commit: c8ac5cfb912ff206b03dd7c60ffbb2dafb83fe5e
.SSL: true
.modules: file,gpio,http,i2c,net,node,spi,tmr,uart,wifi,tls
 build .built on: 2017-06-03 03:24
 powered by Lua 5.1.4 on SDK 2.1.0(116b762)

Используя модуль http, я могу успешно выполнить вызов:

> http.get("http://httpbin.org/ip", nil, function(code, data)
if (code < 0) then
  print("HTTP request failed")
else
  print(code, data)
end
end)>> >> 
> 200   {
"origin": "61.69.19.186"
}

Выполнение эквивалентного вызова с использованием https вызывает тайм-аут:

http.get("https://httpbin.org/ip", nil, function(code, data)
if (code < 0) then
  print("HTTP request failed")
else
  print(code, data)
end
end)>> >> 

with the following messages shown on the console:

HTTP client: Disconnected with error: 9
HTTP client: Connection timeout

Несколько других подобных вопросов примерно год назад говорят об исправлениях, необходимых для сетевого модуля, и конкретной версии реализации SSL, необходимой для вызова httpbin.org:

HTTPS (SSL) получает запрос с помощью NodeMCU

HTTPS получает запросы с NodeMCU и ESP8266

Сборка была создана сегодня с поддержкой TLS/SSL mbedTLS.


person mhaselup    schedule 03.06.2017    source источник


Ответы (2)


Вместо того, чтобы в комментарии, я предлагаю это как «ответ», чтобы впоследствии вопрос можно было закрыть (помогает тем, кто смотрит здесь тег nodemcu).

Это известная проблема, отслеживаемая по адресу https://github.com/nodemcu/nodemcu-firmware/issues/1707. Кажется, что-то сломалось с обновлением Espressif SDK 2.0 для установки безопасных HTTP-соединений.

person Marcel Stör    schedule 04.06.2017
comment
Спасибо за внимание. Похоже, что эта ошибка присутствует и в более ранней прошивке с использованием SDK 1.5.4.1, который я скачал для проверки. файл, gpio, http, i2c, net, node, spi, tmr, uart, wifi, tls build. построен на: 2017-06-07 06:01 на базе Lua 5.1.4 на SDK 1.5.4.1 (39cb9a32) Результат ( если есть): начало рукопожатия клиента. ошибка рукопожатия клиента Ошибка: ошибка SSL 80 - person mhaselup; 07.06.2017
comment
Нет, это что-то другое. Когда я в последний раз проверял, httpbin.org использует сертификат SNI, который не поддерживается Espressif SDK до версии 2.0 (axTLS и mbed TLS). Кроме того, версия до 2.0 поддерживает только TLS 1.1 только с четырьмя наборами шифров. - person Marcel Stör; 07.06.2017

Я видел ошибку -11 на ESP8266 с использованием NodeMCU:

HTTP client: Disconnected with error: -11
HTTP client: Connection timeout

В моем случае помогло отключение брандмауэра (точнее, настройки IP-флуда/ICMP-флуда) моего роутера (мое приложение перестало работать из ниоткуда, предположительно из-за обновления прошивки роутера). Если вы не можете отключить эти настройки на своем маршрутизаторе, вы можете попробовать протестировать приложение в другой сети или на другом маршрутизаторе.

(Я знаю, что это не дает прямого ответа на вопрос (извините!), но может помочь другим людям, которые также используют http.get() и получают код ошибки ‹ 0, как автор вопроса.)

person Matthias Luh    schedule 11.10.2020