Статья

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

Оглавление

Cтатья 1 (установка)
Cтатья 2 (базовая настройка)
Cтатья 3 (добавляем устройства)
Cтатья 4 (интеграция с HomeKit)
Статья 5 (автоматизации)Статья 6 (GUI)Статья 7 (Z-Wave)Статья 8 (MQTT)Статья 9 (HTTPS, SSL)

Предисловие

Сейчас, когда наш умный дом достаточно разросся, пора задуматься о его безопасности и добавить шифрования нашим страничкам. Это особенно важно, если ваш 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><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><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. Не забывайте, что сертификаты выдаются сроком на три месяца, и спустя этот срок, необходимо будет повторить действия из раздела "Получаем сертификат". На этом все!


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

для тех кто в будущем задаётся тем же вопросом:


certbot теперь по дефолту имеет установку крон-задач


Вот тут можно посмотреть актуальную инструкцию установки:


https://certbot.eff.org/lets-encrypt/debianbuster-nginx">https://certbot.eff.org/lets-e...


Tip: Для raspbian buster надо выбрать debian 10

правда в инструкции предлагается копировать ключи

я пробовал сделать вместо этого симлинки, но homeassistant не захотел их читать (((

так что придется таки добавить дополнительный крон скедул, который будет копировать ключи

например каждый день в 4 ночи:

sudo crontab -e

```

    0 4 * * * cd /etc/letsencrypt/live/ВАШ_ДОМЕН/; cp fullchain.pem privkey.pem /usr/share/hassio/homeassistant/.ssl/

```

где ВАШ_ДОМЕН надо заменить

См так же объяснение cron-магии: https://crontab.guru/#0_4_*_*_*

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

получится конечно

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

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

Не решилась проблема? на роутере получен сертификат для д.и. 4го уровня, при переходе по ссылке типа 

 https://mydom.myrouter.keenetic.ru">https://mydom.myrouter.keeneti... я попадаю на страницу авторизации ХА, но после логина я вижу 

Unable to connect to Home Assistant.

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

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

Настроил SSL через Let's encrypt. Работает, по https доступ есть. Проблема в том, что теперь в программе Дом устройства не подключены. После отключения SSL в конфиге устройства в программе Дом появляются в сети. В аддоне homebridge до аддона homekit был параметр, отключающий использование SSL с 

homebridge (

verify_ssl: false). Как можно отключить использование ssl для homekit?

Огонь!

Будет ли работать, если вместо основной SD используется SSD, подключенный также к USB? Как малина поймет, с какого USB загружаться?

Подскажите, есть возможность реализовать по вашей инструкции если роутер xiaomi на родной прошивке не дает пробросить 80 порт?



Добрый вечер! Подскажите, пта:
HA на docker Synology. Synology через https.
Подскажите, пта, по настройке https:
1. Пробросил порт 8123 на роутере

https://sprut.ai/static/media/cache/00/54/20/5/3674754/57293/1000x_image.jpg?1588616377" alt="1000x_image.jpg?1588616377" />


2. На Synology сделал обратный прокси

https://sprut.ai/static/media/cache/00/54/20/5/3674754/57295/1000x_image.jpg?1588616431" alt="1000x_image.jpg?1588616431" />


3. Файл конфигурации:
homeassistant:
auth_providers:
- type: homeassistant
- type: legacy_api_password
api_password: secret! my_api_password


http:
ssl_certificate: /config/chain.pem
ssl_key: /config/privkey.pem
base_url: https://xxx.xxx.com:8123/">https://XXX.XXX.com:8123/

Спасибо

Подскажите, нынче статья актуальна? Захожу по ssh на малину, ввожу sudo apt-get install certbot

в ответ получаю

sudo: apt-get: command not found

Такая же ситуация, не нашлось решение?

Какой дистрибутив? Что за железка? 
можно выполнить uname -a (с пробелом)

Здравствуйте!  При копировании полученных сертификатов в папку настроек HA получаю:

-bash: cd: /home/homeassistant/.homeassistant/: Нет такого файла или каталога.

Подскажите, пожалуйста, новичку в HA, что не так.

если у кого-то что-то подобное, то возможно поможет поменять путь на /usr/share/hassio/homeassistant/

либо сделайте

find / -name homeassistant -type d 2>/dev/null

чтобы найти путь если он у вас совсем другой

А директории .homeassistant внутри нет и не должно быть, в статье какая-то ошибка


Создайте сами. Только я бы назвал её иначе: .ssl


Итого: 


mkdir  /home/homeassistant/.ssl


или


mkdir /usr/share/hassio/homeassistant/.ssl


смотря где лежит HA



И на последнем шагу нужно будет уже этот новый путь прописать

Так же, если конфиг добавлен в гит (удобно чтобы сохранять и делиться конфигами), обязательно надо дописать .ssl в .gitignore, иначе при следующем коммите ключи попадут в публичный репозиторий 

Здравствуйте, подскажите что я делаю не так? 


запускаю:




sudo certbot certonly --standalone --email ХХХХХХ@gmail.com -d ХХХХХХ.com


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 XXXXXXXXX.com


Waiting for verification...


Challenge failed for domain ХХХХХХХ.com


http-01 challenge for ХХХХХХХ.com


Cleaning up challenges


Some challenges have failed.


IMPORTANT NOTES:


- The following errors were reported by the server:


Domain: ХХХХХХХХ.com


Type: dns


Detail: DNS problem: query timed out looking up A for


ХХХХХХХХХ.com


И вот не может пройти верификация как я понимаю?


к примеру если в браузере ввожу 

ХХХХХХХХХ.com:80  - то попадаю в свой homeassistant 



подскажите пожалуйста. если модем пишет что порт 80 занят маршрутизатором и перекидывает на порт 8080 , как это победить ? модем eltex ростелеком. сильно не пинайте , я только учусь ))


https://sprut.ai/static/media/cache/00/83/75/5/8396846/78113/1000x_image.jpg?1620739840" alt="1000x_image.jpg?1620739840" />

Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Вернуться назад