Fullchain-сертификаты и как их добыть: различия между версиями
Нет описания правки |
Нет описания правки |
||
| Строка 9: | Строка 9: | ||
Если совсем просто - | Если совсем просто - текстовые файлы с зашифрованными данными, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Их можно открыть Блокнотом и увидеть что-то вроде: | ||
[[Файл:Пикча]] | |||
Сертификаты можно разделить на степени - или уровни - доверия. | |||
* '''Корневые''' сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов. | * '''Корневые''' сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов. | ||
* '''Промежуточные''' сертификаты. | * '''Промежуточные''' сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты. | ||
* '''Конечные''' сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты. | * '''Конечные''' сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты. | ||
То есть, сертификаты '''составляют вертикальные цепочки''', в которых более | То есть, сертификаты '''составляют вертикальные цепочки''', в которых более высоким сертификатом удостоверяется (подписывается) более низкий. | ||
* '''fullchain''' ("полная цепочка") сертификат - тот, который | |||
* ''' | Теперь легко понятны ещё два термина: | ||
* '''fullchain''' ("полная цепочка") сертификат - тот, который хранит всю цепочку, '''включая корневой и конечный сертификаты''' (и все промежуточные, если они участвуют). <br>Физически fullchain-сертификат - тот же текстовый файл, который хранит все ключи и подписи, участвующие в цепочке. <br>При этом блоки не обязаны идти по порядку, что упрощает их сборку "вручную". | |||
* '''самозаверенный''' (чаще говорят "самоподписанный") сертификат - тот, который '''удостоверяет сам себя''' (на манер корневого сертификата), но при этом, конечно, им не является. <br>Кроме того, из-за того, что его невозможно отозвать, возникают различные риски ("атака посредника", итд). | |||
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда необходимо обеспечить безопасный обмен данными между различными сервисами. | Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда необходимо обеспечить безопасный обмен данными между различными сервисами. | ||
Каждый издатель выкладывает | Сертификат имеет два ключа: | ||
* '''Публичный''' (который можно и нужно раздавать всем) | |||
* '''Приватный''' (который ни в коем случае нельзя отдавать/посылать. В противном случае ключи обязаны быть немедленно перевыпущены). | |||
Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют '''издателем'''. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы каждый с его помощью мог проверить, действительно ли тот или иной сертификат подписан именно этим издателем. | |||
| Строка 30: | Строка 41: | ||
* обязательное использование fullchain-сертификатов. | * обязательное использование fullchain-сертификатов. | ||
Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты вполне можно получать бесплатно (да | Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты вполне можно получать бесплатно (да, те самые Lets' Encrypt, SSL For Free, CAcert итд). | ||
| Строка 36: | Строка 47: | ||
Вариантов и инструкций в Интернете достаточно много. В том числе | Вариантов и инструкций в Интернете достаточно много. В том числе [[Алиса управляет Умным домом через 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 | у нас на вики]]. В следущих разделах - краткие инструкции по самым популярным сервисам: | ||
| Строка 52: | Строка 62: | ||
=== | === SSL For Free === | ||
Процедура очень проста и состоит из нескольких шагов: | |||
# Регистрация на сайте https://sslforfree.com/ | |||
# Выбор настроек (обычно ничего трогать не нужно, просто жмите "Next Step") | |||
# Подтверждение прав на домен, для которого получаете сертификат, любым из способов: | |||
#* на почту его владельца (список готовый, посторонний адрес вписать не получится) - вам должна быть доступен один из почтовых ящиков. | |||
#* изменением полей DNS (CNAME) - для новичков этот способ самый запутанный, но не требует доступности почты и http. | |||
#* скачиванием подтверждающего файла и размещением его в подпапке сайта - к домену должен быть http-доступ из Интернета в момент проверки. | |||
| Строка 67: | Строка 86: | ||
Существуют специальные сервисы для проверки валидности (действительности) сертификатов, например: https://www.sslshopper.com/ssl-checker.html | Существуют специальные сервисы для проверки валидности (действительности) сертификатов, например: https://www.sslshopper.com/ssl-checker.html | ||
<b> | |||
<pre class="red"> | |||
Ни в коем случае никогда и никому не отправляйте файлы, которые содержат ваши приватные ключи! | |||
</pre> | |||
</b> | |||
Версия от 03:22, 5 июня 2021
Что такое сертификаты безопасности?
Если совсем просто - текстовые файлы с зашифрованными данными, которые позволяют сторонам убедиться, что их "собеседники" на другом конце именно те, за кого себя выдают. Их можно открыть Блокнотом и увидеть что-то вроде:
Сертификаты можно разделить на степени - или уровни - доверия.
- Корневые сертификаты. Выпущены специальными удостоверяющими центрами, имеют наивысшую доверительность. Могут удостоверять собой любые другие виды сертификатов.
- Промежуточные сертификаты. Любые виды цепочек сертификатов. Тоже имеют право удостоверять (подписывать) другие сертификаты.
- Конечные сертификаты. Самая низкая степень доверия. Ими нельзя подписывать никакие другие сертификаты.
То есть, сертификаты составляют вертикальные цепочки, в которых более высоким сертификатом удостоверяется (подписывается) более низкий.
Теперь легко понятны ещё два термина:
- fullchain ("полная цепочка") сертификат - тот, который хранит всю цепочку, включая корневой и конечный сертификаты (и все промежуточные, если они участвуют).
Физически fullchain-сертификат - тот же текстовый файл, который хранит все ключи и подписи, участвующие в цепочке.
При этом блоки не обязаны идти по порядку, что упрощает их сборку "вручную". - самозаверенный (чаще говорят "самоподписанный") сертификат - тот, который удостоверяет сам себя (на манер корневого сертификата), но при этом, конечно, им не является.
Кроме того, из-за того, что его невозможно отозвать, возникают различные риски ("атака посредника", итд).
Самоподписанные сертификаты имеют самую низкую надёжность и их использование недопустимо, когда необходимо обеспечить безопасный обмен данными между различными сервисами.
Сертификат имеет два ключа:
- Публичный (который можно и нужно раздавать всем)
- Приватный (который ни в коем случае нельзя отдавать/посылать. В противном случае ключи обязаны быть немедленно перевыпущены).
Организацию, выпускающую сертификаты (удостоверяющий центр или любую другую) называют издателем. Каждый издатель выкладывает в общий доступ свой публичный ключ, чтобы каждый с его помощью мог проверить, действительно ли тот или иной сертификат подписан именно этим издателем.
Сертификаты в навыках Алисы
Поскольку безопасность и надёжность - ключевые характеристики облачных сервисов (нередко с обменом данными сразу между несколькими провайдерами), это накладывает современные требования к протоколам и сертификатам, в том числе:
- обязательная работа через HTTPS,
- обязательное использование fullchain-сертификатов.
Благо, сегодня вряд ли удастся найти хостинг без поддержки SSL/HTTPS, а полноценные сертификаты вполне можно получать бесплатно (да, те самые Lets' Encrypt, SSL For Free, CAcert итд).
Как получить такой сертификат?
Вариантов и инструкций в Интернете достаточно много. В том числе у нас на вики. В следущих разделах - краткие инструкции по самым популярным сервисам:
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, содержащий подписи корневых удостоверяющих центров.
Как понять, что всё хорошо
Существуют специальные сервисы для проверки валидности (действительности) сертификатов, например: https://www.sslshopper.com/ssl-checker.html
Ни в коем случае никогда и никому не отправляйте файлы, которые содержат ваши приватные ключи!
Как понять, что всё плохо
При попытке верифицироваться с неполноценным сертификатом вы получите сообщение "Endpoint URL: Некорректный SSL-сертификат". Возвращайтесь к началу инструкции и проверьте, всё ли вы сделали правильно.