Home Assistant, статья 9 (https, ssl)

22 ноября 2018, 18:41

Предисловие

Сейчас, когда наш умный дом достаточно разросся, пора задуматься о его безопасности и добавить шифрования нашим страничкам. Это особенно важно, если ваш Home Assistant (Далее HA) смотрит наружу вашей локальной сети. Так же данное действие позволит в будущем интегрировать HA как минимум в Google Home, используя API гугла, а не облако самого HA. Давайте разберемся более подробно.

Что необходимо для этого?

Во первых ваш HA должен быть в домене второго или третьего уровня, то есть иметь вид my-homeassistant.com или my-homeassistant.domain.com. А так же нам необходимо будет каким то образом получить подписаний сертификат, мы будем для этого использовать пакет certbot.

Что там с доменом?

Самый простой способ - воспользоваться ddns сервисом. Это будет возможно, если ваш провайдер использует статический и динамический IP адрес. Узнать данную информацию можно, позвонив вашему провайдеру. Вообще сервисов, предоставляющих услуги ddns великое множество, вы можете выбрать тот, который вас устроит:

Регистрируемся на выбранном сервисе, выбираем себе доменное имя, настраиваем сервис ddns на роутере и через пару минут пытаемся перейти по выбранному адресу в браузере. Если при переходе у вас открылась страничка настроек вашего роутера или веб морда HA (Зависит от ваших настроек), значит все настроено верно.

Let's encrypt!

Теперь нам необходимо поставить пакет для запроса и получения ssl сертификата. Подключаемся по ssh к малине, и вводим следующую команду:

sudo apt-get install certbot

при этом система предложит установить еще несколько пакетов, соглашаемся и ждем окончания процесса.

Получаем сертификат

Мы будем делать это используя временно поднятый веб сервер, который создает сам certbot. Для этого необходимо в настройках вашего роутера пробросить порт 80 извне сети на порт 80 вашей малинки. На кастомной прошивке у роутера Xiaomi это выглядит так:

Далее в ssh подключении на малине выполняем следующую команду:

sudo certbot certonly --standalone --email your_email@gmail.com  -d your.domain.org

Не забудьте, что

  • your_email@gmail.com - вместо этого необходимо написать свой действующий email
  • your.domain.org - а тут должен быть написан ваш домен, который вы зарегистрировали у ddns сервиса

Если все сделано правильно, вывод команды будет примерно такой:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for your.domain.org
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations<span class="cm-variable-2"></span><span class="cm-variable-2"></span>! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your.domain.org/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your.domain.org/privkey.pem
   Your cert will expire on 2019-02-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If<span class="cm-variable-2"></span><span class="cm-variable-2"></span> you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Настраиваем Home Assistant

Теперь нам необходимо копировать полученные сертификаты в папку настроек HA. Делаем следующее:

cd /home/homeassistant/.homeassistant/
sudo cp /etc/letsencrypt/live/my.domain.org/fullchain.pem fullchain.pem
sudo cp /etc/letsencrypt/live/my.domain.org/privkey.pem privkey.pem
sudo chown -R homeassistant:homeassistant /home/homeassistant/.homeassistant/

Не забывайте менять my.domain.org на ваш домен. После открываем файл configuration.yaml вашего HA удобным для вас способом и в разделе http: прописываем следующее:

http:
  ssl_certificate: /home/homeassistant/.homeassistant/fullchain.pem
  ssl_key: /home/homeassistant/.homeassistant/privkey.pem

если у вас в этой секции прописаны какие-то настройки - внесите новые после существующих. Пример можно посмотреть в моем Github. Проверяем файл с настройками на правильность и сохраняем. Далее в настройках роутера необходимо добавить переадресацию для еще одного порта. В моем случае это выглядит так:

Теперь наконец можем перезагрузить наш сервис HA и попробовать перейти на его вебморду, используя свеженастроеный https используя адрес вида https://my.domain.org проверив тем самым, что все настроено правильно. Не забудьте поправить ссылку в приложении для iOS, если вы его используете.

P.S. Не забывайте, что сертификаты выдаются сроком на три месяца, и спустя этот срок, необходимо будет повторить действия из раздела "Получаем сертификат". На этом все!


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Aleksey Shchukin (skazo4nik)
    Aleksey Shchukin (skazo4nik) 10 месяцев назад

    Бро, а как на счет автоматизировать получение сертификата? А именно оставить 80ый порт и сделать скриптик, который будет кроном раз в три месяца запускаться и потом менять сертификаты в папке ХА?

  2. (VitaliyZ)
    (VitaliyZ) 10 месяцев назад

    После этих настроек попасть на вебморду по локальному адресу не получится?

  3. (meta11ist87)
    (meta11ist87) 10 месяцев назад

    Можно ли таким образом получить сертификат на доменное имя четвертого уровня? Объясняю ситуацию. Я использую сервис кинетика для получения доступа к домашнему роутеру по доменному адресу. По типу myrouter.keenetic.ru. Далее в роутере настроил доменное имя по типу mydom.myrouter.keenetic.ru. Можно ли аналогичной инструкцией получить ссл сертификат на доменное имя умного дома?

    • Дмитрий  Тер (DTer)
      Дмитрий Тер (DTer) 9 месяцев назад

      У keenetic есть статья как получить сертификат на доменное имя 4-го уровня. Вот только, что делать дальше пока так и не понял. HA как не открывался по  https://mydom.myrouter.keenetic.ru так и не открывается. Может кто подскажет?

      • (meta11ist87)
        (meta11ist87) месяц назад

        Не решилась проблема? на роутере получен сертификат для д.и. 4го уровня, при переходе по ссылке типа   https://mydom.myrouter.keeneti... я попадаю на страницу авторизации ХА, но после логина я вижу  Unable to connect to Home Assistant.

        • Дмитрий  Тер (DTer)
          Дмитрий Тер (DTer) месяц назад

          Нет, не получилось решить. Те-же симптомы. На форуме  ХА, говорят, что проблема в настройках роутера, к которым нет доступа.

    • Artem Tomshin (tweaker3)
      Artem Tomshin (tweaker3) 5 месяцев назад

      Проверено, работает на микротике так же 4ого уровня домен

  4. Наиль Камалеев (greenlama)
    Наиль Камалеев (greenlama) отредактировано 10 месяцев назад
    Комментарий был удален
  5. Artem Tomshin (tweaker3)
    Artem Tomshin (tweaker3) 8 месяцев назад

    Огонь!

  6. Владислав Масенков (Spirit)
    Владислав Масенков (Spirit) отредактировано 6 месяцев назад
    Комментарий был удален
К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
14 сентября 2018, 19:34
Изучаем автоматизации в Home Assistant