Fullchain-сертификаты и как их добыть
Что такое сертификаты безопасности?
Если совсем просто - специальные файлы с зашифрованными данными, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Сертификаты можно разделить на степени - или уровни - доверия.
- Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
- Промежуточные сертификаты. Самые разные виды цепочек сертификатов, в максимальном виде - от корневого и до конечного.
- Конечные сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты.
То есть, сертификаты, как правило, составляют вертикальные цепочки, в которых более высокий сертификат "удостоверяет" более низкий. Теперь будут легко понятны ещё два термина:
- fullchain ("полная цепочка") сертификат - тот, который ведёт свою цепочку доверия напрямую от любого из корневых сертификатов и заканчивается конечным (тот самый промежуточный сертификат в максимальном виде).
- Самозаверенный (самоподписанный) сертификат - тот, который удостоверяет сам себя (на манер корневого сертификата), но при этом, конечно, им не является. Кроме того, из-за того, что его невозможно отозвать, возникают различные риски ("атака посредника", итд).
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда необходимо обеспечить безопасный обмен данными между различными сервисами.
Каждый издатель выкладывает специальный публичный ключ, при помощи которого можно проверить, действительно ли им подписан тот или иной сертификат.
Сертификаты в навыках Алисы
Поскольку безопасность и надёжность - ключевые характеристики облачных сервисов (нередко с обменом данными сразу между несколькими провайдерами), это накладывает современные требования к протоколам и сертификатам, в том числе:
- обязательная работа через HTTPS,
- обязательное использование fullchain-сертификатов.
Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты вполне можно получать бесплатно (да. тот самый Lets' Encrypt, SSL For Free, CAcert итд).
Как получить такой сертификат?
Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики:
- [[https://wiki.yaboard.com/w/Алиса_управляет_Умным_домом_через_Node-RED#.D0.9E.D1.82.D0.BA.D1.80.D1.8B.D0.B2.D0.B0.D0.B5.D0.BC_webhook_.D0.BD.D0.B0.D1.80.D1.83.D0.B6.D1.83_.D0.BF.D0.BE_https | Алиса управляет Умным домом через Node-RED
]]
Если вы воспользовались способом с certbot, то он создаёт 4 файла:
- cert.pem,
- chain.pem,
- fullchain.pem,
- privkey.pem
Для веб-сервера необходимы два из них: fullchain.pem (тот самый, хранящий всю иерархию подписей) и privkey.pem (ваш конечный ключ).
Как понять, что всё хорошо
Существуют специальные сервисы для проверки валидности (действительности) сертификатов, например: https://www.sslshopper.com/ssl-checker.html
Как понять, что всё плохо
При попытке верифицироваться с неполноценным сертификатом вы получите сообщение "Endpoint URL: Некорректный SSL-сертификат". Возвращайтесь к началу инструкции и проверьте, всё ли вы сделали правильно.