2016-03-30 3 views
1

У меня есть гаджет [*], который подключается к сети WiFi пользователя и отвечает на команды через простой интерфейс REST. Пользователь использует веб-приложение для управления этим гаджетом. Веб-приложение в настоящее время обслуживается через http, и javascript приложения делает AJAX для локального IP-адреса гаджета, чтобы управлять им. Эта схема работает хорошо, и у меня нет проблем с ней.HTTPS для локального IP-адреса

[*] Под «гаджет» Я имею в виду фактическое, физическое устройство IoT, что пользователь покупает и устанавливает в своем доме, и настроит подключение к своей домашней Wi-Fi сети

Теперь я хочу для обслуживания этого веб-приложения за https. У меня нет проблемы с настройкой https на стороне хостинга. Проблема в том, что теперь браузер блокирует доступ к гаджету (так как REST API гаджета превышает http, а не https).

Очевидное решение состоит в том, чтобы гаджет обслуживал его REST API за https. Но как? Он имеет локальный IP-адрес, и никто не выдаст ему сертификат. (Даже если бы они это сделали, мне пришлось бы покупать лодку сертификатов для каждого возможного локального IP-адреса.) Я мог бы совершить кругосветное путешествие через облако (добавив дополнительную логику на моей стороне сервера, чтобы принять команды из веб-приложения и вперед это гаджет над другим соединением), но это увеличит задержки.

Есть ли способ обойти эту проблему? Одна из возможностей, что я имею в виде, заключаются в следующем:

  1. Получить групповой сертификат (скажем, *.mydomain.com)
  2. Выполнить свой собственный DNS, который отображает поддомены на локальный IP-адрес следующего рисунка (например, 192-168-1-123.mydomain.com будет отображаться в 192.168.1.123)
  3. Использование сертификата дикого карты во всех гаджетов
  4. Мой веб-приложение, то могли бы сделать AJAX вызовы https://192-168-1-123.mydomain.com вместо http://192.168.1.123 и латентные останется неизменным в сторону от первоначального поиска DNS

Будет ли это работать? Это дорогой эксперимент, чтобы попробовать (подстановочные сертификаты стоят ~ 200 долларов США), а работа DNS-сервера выглядит как лот работы. Кроме того, я нахожу себя недостаточно квалифицированным, чтобы анализировать последствия для безопасности.

Возможно, у вас уже есть служба, которая решает эту проблему?

+0

Почему бы вам не попробовать разместить свой гаджет на статическом IP-адресе? Тогда вам понадобится только один сертификат – koelkastfilosoof

+0

@koelkastfilosoof Большинство ЦС не выдают сертификаты для голых IP-адресов. Даже если бы они, мне пришлось бы полагаться на моего пользователя, чтобы выполнить настройку (статический IP-адрес должен быть настроен на маршрутизаторе WiFi, чтобы избежать конфликтов), который подвержен ошибкам. Кроме того, было бы невозможно иметь более одного гаджета на одно домашнее хозяйство. –

+0

http: //security.stackexchange.com/вопросы/116832/securing-peer-to-peer-communication – lxkarthi

ответ

1

Если вы хотите получить доступ к API-интерфейсам устройства через веб-браузер, простым решением было бы проксировать все запросы к устройству через ваш веб-сервер. Это были даже самоподписанные сертификаты для устройств, которые не будут проблемой , Проблема только в том, что сервер должен быть в той же сети, что и ваши устройства.

Если вы не в той же сети, вы можете написать простой плагин браузера (хром), чтобы отправить запрос api на устройство IoT. но тогда зависимость от приложения/плагина будет неуклюжей.

Смежные вопросы