• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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. Естественно работать не будет.
 
Сверху Снизу