Настройка HTTPS на сервере Hotspot

HTTPS – (HyperText Transfer Protocol Secure) – это безопасный протокол передачи данных, с поддержкой шифрования посредством криптографических протоколов SSL и TLS. Является расширенной версией протокола HTTP.

Простыми слова HTTPS – это протокол, который позволяет безопасно обмениваться информацией в интернете. Для того, чтобы ваш браузер удостоверился, что сайт, на который вы обращаетесь или передаете данные, является безопасным, ему нужно проверить его SSL/TLS сертификат.

SSL/TLS сертификат – это цифровая подпись сайта, или, проще говоря, документ, подтверждающий подлинность этого сайта.

Браузер запрашивает этот сертификат у центра сертификации, и, если он действителен, то браузер посчитает этот сайт безопасным и начнет обмен информацией. Если такого сертификата нет, либо он просрочен, то браузер выдаст ошибку, что соединение будет небезопасным.

Но проверить один лишь сертификат сайта не достаточно, существует иерархия сертификатов.

Есть конечный, промежуточный (их может быть несколько) и корневой сертификат. Основной наш хост, на котором происходит регистрация устройств, – это c4.glhs.ru. Если вы перейдете на этот сайт и проверите информацию о сертификате, то в иерархии сертификатов видно, что промежуточный сертификат для него – это R11, а корневой – это ISRG Root X1.

Промежуточный и корневые сертификаты нужны для проверки подлинности конечного сертификата сайта. Если у сайта нет промежуточного и корневого сертификата, то браузер посчитает его недействительным и выдаст ошибку соединения. На данный момент большенство современных операционных систем доверяют корневому сертификату ISRG Root X1 и он находится уже локально в системе. Поэтому при переходе на сайт c4.glhs.ru вы увидите, что ваш браузер установил безопасное соединение с сайтом.

Так же существует такой механизм как HSTS. Это принудительный переход с HTTP на HTTPS. На данный момент практически все сайты имеют HSTS, поэтому у вас не получится вместо https://имя_сайта.ru вбить http://имя_сайта.ru. Вас принудительно перекинет на https.

Информация, что сайт имеет HSTS, хранится в вашем браузере в специальной табличке, и ее передает сам сайт при первом подключение на него. Так же существует статический список HSTS, который есть во всех браузерах. При его установке, в него добавлены некоторые сайты, которые имеют HSTS.

Поэтому, если вы при подключение к гостевой сети Wi-Fi с авторизацией перейдете на http://ya.ru, при условии что ваш браузер никогда на этот сайт не переходил и его нет в статическом списке HSTS, то вас переадресует на портал авторизации. В противном случае ваш браузер выдаст ошибку соединения и невозможность проверить сертификат.

Hotspot и HTTPS

При подключение к гостевой сети с авторизацией, ваше устройство начнет проверку интернета в этой сети. Обычно это простой get запрос, который отправляет устройство. Например, устройства Apple отправляют его на http://captive.apple.com, устройства на Android – на http://connectivitycheck.gstatic.com. При отправке get запроса точка доступа перехватывает его и возвращает 302 редирект на ссылку с порталом авторизации. Эта ссылка открывается в CNA браузере, это встроенный однооконный браузер, имеющий ограниченный функционал, который есть на всех современных устройствах. Далее происходит обычный процесс регистрации устройства и авторизации.

Если по какой то причине устройство не отправило get запрос на проверку доступа интернета в гостевой сети, то необходимо этот запрос сделать вручную. Нужно открыть браузер и перейти на любой сайт, работающий по http-протоколу. Не используйте для этого сайты компании Яндекс или Google, так как они используют HSTS-заголовок. Обычно мы просим перейти на www.ru

Если пользователь будет идти на сайт с https, то его браузер начнет проверять сертификат этого сайта, но так как доступ в интернет ограниченный, то он не сможет этого сделать, в результате браузер выдаст ошибку безопасного соединения. Избежать этого никак нельзя, так как основная работа шифрования данных TLS и SSL проходит на 6 уровне модели OSI (уровень представления), а аутентификация — на 5 уровне модели OSI (сеансовый уровень).

Единственный вариант обойти это – открыть в браузере сайт по HTTP. Тогда сразу появится страница авторизации.

Может так же возникнуть проблема после нажатия кнопки Перейти в интернет, при условии что пользователь проходит авторизацию на ПК/Ноутбуке либо смартфоне и использует полноценный браузер, а не CNA. В этом случае запрос в роутер/контроллер уходит по протоколу HTTP, сейчас все браузеры по умолчанию блокируют HTTP запросы и перед отправкой браузер напишет предупреждение, что данный запрос является не безопасным, и для того, чтобы его обойти нужно нажать Все равно продолжить, после этого у вас появится выход в интернет. Запрос уходит по HTTP в связи с тем, что по умолчанию hotspot сервер работает именно по HTTP. В нашем случае в запросе нет какой-либо конфиденциальной информации, там фигурирует только mac-адрес устройства с которого происходит авторизация. Шифровать этот запрос нет необходимости, но возможность настроить отправку запроса по HTTPS есть.

Требование перехода Hotspot на HTTPS

Для того, чтобы настроить hotspot по https нужно:

  1. Роутер/контроллер с hotspot сервером должен иметь доменное имя, гостевые устройства должны уметь его резолвить.
  2. Подгрузить на указанное доменное имя роутера/контроллера сертификат, который будет восприниматься браузером пользователя как валидный.
  3. Включить режим работы HTTPS в настройках сервера hotspot.
  4. В случае с Mikrotik файлах hotspot все ссылки нужно исправить на /mik5s/

Если эти условия будут выполнены, то после кнопки Перейти в интернет у вас не будет возникать ошибка небезопасного соединения. Но на перехват https трафика это ни как не повлияет!

Пример настройки работы Hotspot по HTTPS на роутере Mikrotik

Для начала нужно загрузить на mikrotik валидный сертификат. В нашем случае их должно быть два: это сертификат hotspot сервера и его корневой сертификат. Если у вас есть валидный сертификат из доверенного центра сертификации (Trusted CA), то вам нужно добавить его. Так же в mikrotik можно сделать самоподписанный сертификат, но в этом случае браузер будет ругаться на то, что сертификат является самоподписанным.

Чтобы сделать самоподписанный сертификат нужно:

1 – Создать собственный центр сертификации, который будет подписывать сертификаты. Команда для выполнения в терминале:

/certificate
add name=ca-template common-name=myCa key-usage=key-cert-sign,crl-sign
sign ca-template name=myCa

2 – Создать сертификат для hotspot

/certificate
add name=Hotspot-template common-name=Hotspot
sign Hotspot-template ca=myCa name=Hotspot

3 – Сделать сертификат сервера доверенным

set [find name=Hotspot] trusted=yes

В разделе System/Certificates вы увидите оба созданных сертификата.

Далее в разделе IP/Services нужно включить службу SSL и указать сертификат для Hotspot. Команда для выполнения в терминале:

/ip service set www-ssl certificate=Hotspot disabled=no

И включить HTTPS в настройках hotspot. Для этого в терминале надо выполнить:

/ip hotspot profile set glhsprof login-by=https,http-pap ssl-certificate=Hotspot

После нужно назначить dns имя для hotspot сервера. В этом же окне в разделе General в поле DNS name пропишите dns имя. И в IP/DNS включите Allow remote Requests. Команда для выполнения в терминала, на примере dns имени mikrotik.lan, смените его на ваше доменное имя.

/ip hotspot profile set glhsprof dns-name=mikrotik.lan
/ip dns set allow-remote-requests=yes

В Winbox:

На этом настройка HTTPS для hotspot закончена.