Fullchain-сертификаты и как их добыть
Что такое сертификаты безопасности?
Если совсем просто - текстовые файлы с зашифрованными данными, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Их можно открыть Блокнотом и увидеть что-то вроде:
Сертификаты можно разделить на степени - или уровни - доверия.
- Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
- Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.
- Конечные сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты.
То есть, сертификаты составляют вертикальные цепочки, в которых более высоким сертификатом удостоверяется (подписывается) более низкий.
Теперь легко понятны ещё два термина:
- fullchain ("полная цепочка") сертификат - тот, который хранит всю цепочку, включая корневой и конечный сертификаты (и все промежуточные, если они участвуют).
Физически fullchain-сертификат - тот же текстовый файл, который хранит все ключи и подписи, участвующие в цепочке.
При этом блоки не обязаны идти по порядку, что упрощает их сборку "вручную". - самозаверенный (чаще говорят "самоподписанный") сертификат - тот, который удостоверяет сам себя (на манер корневого сертификата), но при этом, конечно, им не является.
Кроме того, из-за того, что его невозможно отозвать, возникают различные риски ("атака посредника", итд).
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда требуется обеспечить безопасный обмен данными.
Сертификат имеет два ключа:
- Публичный (который можно и нужно раздавать всем)
- Приватный (который ни в коем случае нельзя отдавать/посылать. В противном случае ключи обязаны быть немедленно перевыпущены).
Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют издателем. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы любой желающий с его помощью мог проверить, действительно ли сертификат подписан именно этим издателем.
И напоследок, у сертификата есть срок действия, после которого пользоваться им не получится. А также сертификат может быть отозван по каким-то причинам (например, скомпрометирован публичный ключ). Сертификат, у которого всё хорошо, называют валидным (действительным) - и наоборот.
Сертификаты в навыках Алисы
Поскольку безопасность и надёжность - ключевые характеристики облачных сервисов (нередко с обменом данными сразу между несколькими провайдерами), это накладывает современные требования к протоколам и сертификатам, в том числе:
- обязательная работа через HTTPS,
- обязательное использование fullchain-сертификатов.
Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты легко можно получать бесплатно (да, те самые Lets' Encrypt, SSL For Free, CAcert итд).
Как получить такой сертификат?
Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики. В следующих разделах - краткие инструкции по самым популярным сервисам:
Lets' Encrypt и certbot
Если вы воспользовались способом с 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, содержащий подписи корневых удостоверяющих центров.
Как понять, что всё хорошо
Очень просто: всё работает! :)
Кроме того, существуют сервисы для онлайн-проверки валидности сертификатов, например, на SSL Shopper.
Ни в коем случае никогда и никому не отправляйте файлы, которые содержат ваши приватные ключи!
Как понять, что всё плохо
При попытке верифицироваться с неполноценным сертификатом вы получите сообщение "Endpoint URL: Некорректный SSL-сертификат".
Возвращайтесь к началу инструкции, по которой вы его выпускали и проверьте, всё ли вы сделали правильно. Сравните с любой другой инструкцией из Интернета. Возможно, где-то вкралась ошибка, или другое объяснение окажется вам более полным и понятным.