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) 6 месяцев назад

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

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

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

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

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

    • (DJTerentjev)
      (DJTerentjev) 5 месяцев назад

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

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

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

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

    Огонь!

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

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

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant