
Я работаю над веб-приложением, работающим на сервере. Будут клиенты (браузеры смартфонов), подключающиеся к серверу через HTTPS через WiFi, который не будет подключен к Интернету. Он будет в основном использоваться для однодневных мероприятий.
Проблема:Возможно ли использование HTTPS без Интернета?
- Мы не можем добавлять сертификаты в хранилища доверия клиентов. Мы также не можем настраивать клиентов каким-либо другим способом. Клиентами будут случайные люди, посещающие мероприятие
- Клиенты не могут получить доступ к интернету для проверки CRL/OCSP. Возможно, просто нет подключения к интернету
У меня есть мысльс использованием локального DNS:
- У меня есть ключ и доверенный SSL-сертификат (LetsEncrypt) для
offline.mydomain.com
- В автономной сети WiFi есть DNS-сервер, который направляет все DNS-адреса на мой сервер приложений.
- Все сертификаты и списки отзыва сертификатов из
offline.mydomain.com
цепочки доверия SSL-сертификата загружаются на сервер приложений, и к ним можно получить доступ по путям, определенным в CDP и AIA сертификатов. - Сервер приложений утверждает, что он работает на
https://offline.mydomain.com
(а DNS-сервер указываетoffline.mydomain.com
на сервер приложений)
Весь поток будет таким:
- Клиент:
GET https://offline.mydomain.com/app
- DNS-сервер:
offline.mydomain.com
находится на IP-адресе сервера приложений - Мой сервер приложений:вот HTML
- ...
- Клиент:
GET http://crl.ca.com/crls/ca.crl
- DNS-сервер:
crl.ca.com
находится на IP-адресе сервера приложений - Мой сервер приложений:вот CRL
- ...
- Клиент:
GET http://certificate.ca.com/certs/ca.cer
- DNS-сервер:
certificate.ca.com
находится на IP-адресе сервера приложений - Мой сервер приложений:вот сертификат
- ...
Однако я не очень понимаю в сетях. Возможно ли реализовать часть DNS?
- Могу ли я заставить клиентов использовать мой локальный DNS, не настраивая их вручную?
- Насколько сильно будут сбиты с толку клиенты после повторного подключения к реальному Интернету?
- Будут ли смартфоны подключаться к Wi-Fi, не подключенному к Интернету?
решение1
Я не думаю, что клиент не сможет подключиться к хосту TLS только потому, что он не может достичь CRL или сервера OCSP. Поэтому я на 99% уверен, что все, что вам нужно, это:
- Сертификат сервера, подписанный широко известным центром сертификации (например, Let's Encrypt), вместе с соответствующим закрытым ключом, установленным на вашем локальном веб-сервере.
- Локальный DNS-сервер, который направляет соответствующее имя хоста на IP-адрес вашего локального сервера.
- DHCP-сервер для назначения IP-адресов клиентским устройствам и указания им использовать ваш DNS-сервер.
DNS и DHCP — очень легкие операции, поэтому при желании их можно легко запустить на том же компьютере, что и HTTPS-сервер.
На мобильных устройствах Wi-Fi, скорее всего, будет включен DHCP, и они, скорее всего, смогут использовать любой DNS-сервер, который DHCP-сервер им скажет использовать. Поэтому я не думаю, что вам нужно беспокоиться о том, чтобы указывать "8.8.8.8"/"8.8.4.4"/"1.1.1.1" на вашем локальном DNS-сервере. Но я настоятельно рекомендую вам настроить прототип вашей автономной сети задолго до события и протестировать его на различных устройствах iOS, Android, Mac и Windows (по крайней мере, на одном из каждого).
Устройства ни в коем случае не должны путаться при подключении к реальному Интернету.