Перейти к содержанию

Fullchain-сертификаты и как их добыть

Материал из Wiki yaboard
Черновая версия Cтраница не завершена
Информация на этой странице не проверена до конца. Текст дорабатывается, обозначенные решения могут быть неполными или не совсем точными.

Что такое сертификаты безопасности?

Если совсем просто - текстовые файлы с зашифрованными данными, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Их можно открыть Блокнотом и увидеть что-то вроде:

Файл:Пикча


Сертификаты можно разделить на степени - или уровни - доверия.

  • Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
  • Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.
  • Конечные сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты.
То есть, сертификаты составляют вертикальные цепочки, в которых более высоким сертификатом удостоверяется (подписывается) более низкий. 

Теперь легко понятны ещё два термина:

  • fullchain ("полная цепочка") сертификат - тот, который хранит всю цепочку, включая корневой и конечный сертификаты (и все промежуточные, если они участвуют).
    Физически fullchain-сертификат - тот же текстовый файл, который хранит все ключи и подписи, участвующие в цепочке.
    При этом блоки не обязаны идти по порядку, что упрощает их сборку "вручную".
  • самозаверенный (чаще говорят "самоподписанный") сертификат - тот, который удостоверяет сам себя (на манер корневого сертификата), но при этом, конечно, им не является.
    Кроме того, из-за того, что его невозможно отозвать, возникают различные риски ("атака посредника", итд).
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда необходимо обеспечить безопасный обмен данными между различными сервисами.

Сертификат имеет два ключа:

  • Публичный (который можно и нужно раздавать всем)
  • Приватный (который ни в коем случае нельзя отдавать/посылать. В противном случае ключи обязаны быть немедленно перевыпущены).

Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют издателем. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы каждый с его помощью мог проверить, действительно ли тот или иной сертификат подписан именно этим издателем.

Сертификаты в навыках Алисы

Поскольку безопасность и надёжность - ключевые характеристики облачных сервисов (нередко с обменом данными сразу между несколькими провайдерами), это накладывает современные требования к протоколам и сертификатам, в том числе:

  • обязательная работа через HTTPS,
  • обязательное использование fullchain-сертификатов.

Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты вполне можно получать бесплатно (да, те самые Lets' Encrypt, SSL For Free, CAcert итд).

Как получить такой сертификат?

Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики. В следущих разделах - краткие инструкции по самым популярным сервисам:

certbot

Если вы воспользовались способом с certbot, то он создаёт 4 файла:

  1. cert.pem,
  2. chain.pem,
  3. fullchain.pem,
  4. privkey.pem

Для веб-сервера необходимы два из них: fullchain.pem (тот самый, хранящий всю иерархию подписей) и privkey.pem (ваш конечный ключ).

SSL For Free

Процедура очень проста и состоит из нескольких шагов:

  1. Регистрация на сайте https://sslforfree.com/
  2. Выбор настроек (обычно ничего трогать не нужно, просто жмите "Next Step")
  3. Подтверждение прав на домен, для которого получаете сертификат, любым из способов:
    • на почту его владельца (список готовый, посторонний адрес вписать не получится) - вам должна быть доступен один из почтовых ящиков.
    • изменением полей DNS (CNAME) - для новичков этот способ самый запутанный, но не требует доступности почты и http.
    • скачиванием подтверждающего файла и размещением его в подпапке сайта - к домену должен быть http-доступ из Интернета в момент проверки.


Создаёт три файла:

  • ca_bundle.crt
  • certificate.crt
  • private.key

Получить всю цепочку можно, склеив в любом текстовом редакторе все три файла. Вероятно, дополнительно понадобится найти файл root, содержащий подписи корневых удостоверяющих центров.

Как понять, что всё хорошо

Существуют специальные сервисы для проверки валидности (действительности) сертификатов, например: https://www.sslshopper.com/ssl-checker.html

Ни в коем случае никогда и никому не отправляйте файлы, которые содержат ваши приватные ключи!

Как понять, что всё плохо

При попытке верифицироваться с неполноценным сертификатом вы получите сообщение "Endpoint URL: Некорректный SSL-сертификат". Возвращайтесь к началу инструкции и проверьте, всё ли вы сделали правильно.