• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Переадресация с https на http

Goldsad

Member
Настроил на ESP DNS сервер и вебсервер, благодаря чему теперь после подключения не важно какой адрес в браузере ввести всегда открывается страницы вебсервера на ESP. Но если в адресной строке https протокол то не будет открыта страница вебсервера на ESP. Возможно ли перадресовать или иным способом открывать на вебсервере на ESP запросы с https соединением?
 

Shyster

New member
https по умолчанию имеет порт 443, у вас порт не слушается, слушайте порт и делайте ридерект на http порт 80
 

Goldsad

Member
@Shyster я предполагаю что в этом направлении надо двигаться, но не выходит :-(
имею примерно такой код
......
#include <ESP8266WebServer.h>
......
ESP8266WebServer server(80);
ESP8266WebServer server443(443);
.......
void setup(void){
.....
server.begin();

server443.onNotFound([](){
if(!handleFileRead(server.uri()))
server.send(404, "text/html", "<!doctype html><html><head><meta http-equiv=\"refresh\" content=\"0;URL=http://lyuboi.sait/index.htm\"></head><body></body></html>>");
});
server443.begin();
}

void loop(void){
.......
server.handleClient();
server443.handleClient();
.......
}

по http все работает, а вот по https не хочет
 
Последнее редактирование:

Shyster

New member
У вас 404 возвращает? Если возвращает то для редиректа нужен код 302 и в заголовке вернуть перенаправление, как это сделать я не разбирался. и у вас там server вместо server443
 

Goldsad

Member
У вас 404 возвращает? Если возвращает то для редиректа нужен код 302 и в заголовке вернуть перенаправление, как это сделать я не разбирался. и у вас там server вместо server443
Код поменял, но не в нем проблема.
Должно быть и server и server443, это для разных портов и работает. Сейчас проблема в том, что когда протокол https браузер ругается, что "не удается установить безопасное соединение". Так полагаю нужен сертификат понятный браузеру. Как вот это обойти?
 

Shyster

New member
Код поменял, но не в нем проблема.
Должно быть и server и server443, это для разных портов и работает. Сейчас проблема в том, что когда протокол https браузер ругается, что "не удается установить безопасное соединение". Так полагаю нужен сертификат понятный браузеру. Как вот это обойти?
Ну в браузере можно отключить. По другому не получится.
 

Goldsad

Member
@Shyster я это предполагаю, но надеюсь, что может как-то обойти можно, а то пользователю объяснять это лишняя морока.
 

Сергей_Ф

Moderator
Команда форума
@Shyster я это предполагаю, но надеюсь, что может как-то обойти можно, а то пользователю объяснять это лишняя морока.
В браузере можно, на сервере нельзя. Это нарушение протокола безопасности https. Не для того он сделан, что бы его нарушать.
 

Goldsad

Member
В общем, я так понимаю, нет смысла заморачиваться с этим протоколом. Указать, что использовать http и все. А так было б круто, чтоб не написал в адресной строке при подключенной сети esp попадал на её вебинтерфейс.
 

Сергей_Ф

Moderator
Команда форума
@Goldsad а чем CaptivePortal не устроил? Там вообще ничего набирать не надо. Само открывает страницу.
 

pvvx

Активный участник сообщества
@Goldsad а чем CaptivePortal не устроил? Там вообще ничего набирать не надо. Само открывает страницу.
Но только в случае если AP и вы теряете доступ в своем устройстве к другим интерфейсам связи с интернет.
Т.е. это кривенькое решение и большинство пользователей от него в восторге - падает вся остальная связь :)
------
На HTTPS сервер у ESP8266 банально не хватает ресурсов. Пора про ESP8266 забыть и забить. :)
 

Goldsad

Member
@Goldsad а чем CaptivePortal не устроил? Там вообще ничего набирать не надо. Само открывает страницу.
Я использую DNS сервер [inline]dnsServer.start(DNS_PORT, "*", apIP);[/inline], как понимаю почти тоже самое что и CaptivePortal, хотелось чтоб и с https, но не выходит :-( .
 

pvvx

Активный участник сообщества
@pvvx, а какая альтернатива ESP8266 при такой цене и возможностях?
mjiot2017 | eBay
RTL8710BN - полная замена на все случаи жизни с доп. плюшками и меньшей ценой.
RTL8711BN - полная замена на все случаи жизни с доп. плюшками + USB2.0 и меньшей ценой.
RTL8710AF - частичная замена (другой подход - больше RAM (512k), но код из Flash не исполняется, что задет специфику)
RTL8711AM - цена в 2 раза больше, но имеет 2.5 МБайт RAM на борту
RT8195Ax - цена в 2.5 раза больше, но имеет 2.5 МБайт RAM + USB2.0 на борту.
Ну и все поддерживают WiFi HT40 (PHY 150Mbit/s) + NFC у серий с "A".
Имеют меньшее потребление и меньшее кол-во глюков.
+ Полная сертификация у альянса WiFi
+ Более открытый и общий на всю серию SDK (закрыты только исходники низкоуровневого драйвера WiFi, если без NDA)
+ Т.к. CPU ARM, то имеется множественное отлаженное программное обеспечение для отладки и сборки в любой системе, включая проприетарное ПО (IAR, Keil, Segger, ...)
На серию "A" есть поддержка Arduino и MBED. На "B" - уже готовится.

Осенью наверно появятся ещё какие WiFiSoC от других производителей, способных обеспечивать задачи IoT по близкой цене к ESP8266. Их и сейчас уже много, но "народ всегда выбирает худшее", а цена и доступность для народа определяется спросом (поштучным). Это никак не касается серийных закупочных цен и ценообразования для производителей хоть мелкосерийки. По этому из-за глючности SDK от Espressif и невозможности поддержки SSL ESP8266 не используется в серийном производстве - только DIY, где нет никаких гарантий.
 
Последнее редактирование:

AlexandreVN

Member
Апну тему. Иногда клиент пытается подключится к esp по HTTPS вместо HTTP, естественно не подключается. Решил добавить редирект с HTTPS на HTTP, чтоб каждый раз не объяснять. Тем более что на смартфонах протокол как правило не на экране. Так вот, по 80 порту все работает, а по HTTPS на 443 порту "сервер не найден" в Мозиле и "сервер сбросил соединение" в Хром. В тоже время HTTP по 443 порту (если прямо указать в адресе) работает.
Нигде не увидел что это должно работать кроме как здесь. Редирект с HTTPS на HTTP вообще возможен, может это от версии SDK как то зависит?
 

Сергей_Ф

Moderator
Команда форума
@AlexandreVN так у вас не https, а http но на порту 443. А клиент ломится по https. Естественно работать не будет.
 
Сверху Снизу