Fullchain-сертификаты и как их добыть: различия между версиями
Нет описания правки |
мНет описания правки |
||
| Строка 54: | Строка 54: | ||
Вариантов и инструкций в Интернете достаточно много. В том числе [[Алиса управляет Умным домом через 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#.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]]". | ||
В следующих разделах - краткие инструкции по самым популярным сервисам: | |||
Версия от 05:24, 5 июня 2021
Что такое сертификаты безопасности?
Если совсем просто - это самые обычные текстовые файлы с зашифрованными данными внутри, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Их можно открыть Блокнотом и увидеть что-то вроде:
Таких блоков в файле может быть один или больше, в зависимости от длины цепочки (каждый ключ или подпись - свой блок).
Порядок блоков не имеет значения.
Сертификаты можно разделить на степени - или уровни - доверия.
- Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
- Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.
- Конечные сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты.
То есть, сертификаты составляют вертикальные цепочки, в которых более высоким сертификатом удостоверяется (подписывается) более низкий.
Теперь легко понятны ещё два термина:
- fullchain ("полная цепочка") сертификат - тот, который хранит всю цепочку, включая корневой и конечный сертификаты (и все промежуточные, если они участвуют).
Физически fullchain-сертификат - тот же текстовый файл, который хранит все ключи и подписи, участвующие в цепочке.
При этом блоки не обязаны идти по порядку, что упрощает их сборку "вручную". - самозаверенный (чаще говорят "самоподписанный") сертификат - тот, который удостоверяет сам себя на манер корневого сертификата, но при этом, конечно, им не является.
Кроме того, из-за того, что самоподписанные сертификаты невозможно отозвать, возникают различные риски ("атака посредника" итд).
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда требуется обеспечить безопасный обмен данными.
Сертификат имеет два ключа:
- Публичный (который можно и нужно раздавать всем)
- Приватный (который ни в коем случае нельзя отдавать/посылать. В противном случае ключи обязаны быть немедленно перевыпущены).
Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют издателем. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы любой желающий с его помощью мог проверить, действительно ли сертификат подписан именно этим издателем.
И напоследок, у сертификата есть срок действия, после которого пользоваться им не получится. А также сертификат может быть отозван по каким-то причинам (например, скомпрометирован публичный ключ). Сертификат, у которого всё хорошо, называют валидным (действительным) - и наоборот.
Сертификаты в навыках Алисы
Поскольку безопасность и надёжность - ключевые характеристики облачных сервисов (нередко с обменом данными сразу между несколькими провайдерами), это накладывает современные требования к протоколам и сертификатам, в том числе:
- обязательная работа через HTTPS,
- обязательное использование fullchain-сертификатов.
Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты легко можно получать бесплатно (да, те самые Lets' Encrypt, SSL For Free, CAcert итд).
Как получить такой сертификат?
Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики в статье " Алиса управляет Умным домом через Node-RED".
В следующих разделах - краткие инструкции по самым популярным сервисам:
Lets' Encrypt и certbot
Потребуется установить программу certbot. Под *nix- системами это сделать проще, но под Windows тоже не потребуется сверхъестественных действий.
Если вы воспользовались способом с certbot, то он создаёт 4 файла:
- cert.pem,
- chain.pem,
- fullchain.pem,
- privkey.pem
Для веб-сервера необходимы два из них: fullchain.pem (тот самый, хранящий всю иерархию подписей) и privkey.pem (ваш конечный ключ).
SSL For Free
Процедура очень проста, на этот раз ничего устанавливать не нужно:
- Регистрация на сайте https://sslforfree.com/
- Выбор настроек (обычно ничего трогать не нужно, просто жмите "Next Step")
- Подтверждение прав на домен, для которого получаете сертификат, любым из способов:
- на почту его владельца (список готовый, посторонний адрес вписать не получится) - вам должна быть доступен один из почтовых ящиков.
- изменением полей DNS (CNAME) - для новичков этот способ самый запутанный, но не требует доступности почты и http.
- скачиванием подтверждающего файла и размещением его в подпапке сайта - к домену должен быть http-доступ из Интернета в момент проверки.
Создаёт три файла:
- ca_bundle.crt
- certificate.crt
- private.key
Получить всю цепочку можно, склеив в любом текстовом редакторе все три файла. Вероятно, дополнительно понадобится найти файл root, содержащий подписи корневых удостоверяющих центров.
Как понять, что всё хорошо
Очень просто: вы скопировали файлы сертификатов в нужную папку, указали вашему веб-серверу пути к ним, и всё работает! :)
Как понять, что всё плохо
При попытке верифицироваться с неполноценным сертификатом вы получите сообщение "Endpoint URL: Некорректный SSL-сертификат".
Возвращайтесь к началу инструкции, по которой вы его выпускали и проверьте, всё ли вы сделали правильно. Сравните с любой другой инструкцией из Интернета. Возможно, где-то вкралась ошибка, или другое объяснение окажется вам более полным и понятным.
Как проверить сертификат на валидность
Онлайн
Вот несколько популярных сервисов для онлайн-проверки валидности сертификатов:
Все три англоязычные, все три бесплатные, для всех трёх надо ввести ваш доменный адрес, но первый выводит более красивые картинки и, возможно, это тоже сыграло роль в его популярности в русскоязычном сегменте. Главное - чтобы все пункты были с зелёными крыжиками ) самоподписанные сертификаты этот сервис тоже определяет.
Ни в коем случае никогда и никому не отправляйте файлы, которые содержат ваши приватные ключи!
