Битлента
Сравнение технологий4 мин чтения·

Сертификат или закрытый ключ в TLS: в чём разница и кто за что отвечает

Сертификат и закрытый ключ часто путают: один публичен и подтверждает личность сервера, другой секретен. Разбор ролей, рисков и типичных ошибок.

Два файла, которые лежат рядом, но делают разное

При настройке HTTPS на сервере администратор почти всегда работает с парой файлов: один называют сертификатом, второй закрытым ключом. Они создаются вместе и математически связаны, поэтому в обиходе их часто сваливают в одну кучу под словами «ключ шифрования». На самом деле это два разных объекта с противоположными требованиями к хранению.

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

Полезная аналогия — паспорт и личная подпись. Паспорт может лежать у любого, его смотрят при проверке, но подпись, которую невозможно подделать, есть только у владельца. Если сравнивать по критериям, различие в том, что документ обеспечивает доверие со стороны клиента, а подпись обеспечивает доказательство владения.

Что делает сертификат

Задача сертификата — ответить на вопрос «с кем я разговариваю». Браузер получает документ и проверяет три вещи: совпадает ли имя в нём с адресом сайта, не истёк ли срок действия и ведёт ли цепочка подписей к центру, которому доверяет система. Если хотя бы одно звено не сходится, пользователь видит предупреждение.

Сам по себе сертификат ничего не шифрует. Он лишь связывает имя с открытым ключом и позволяет клиенту убедиться, что этот ключ действительно принадлежит владельцу домена. Поэтому копию сертификата можно безопасно публиковать, а его подделка без подписи центра не пройдёт проверку.

Еще одна особенность: сертификат имеет срок жизни и требует продления. Забытое продление — самая частая причина внезапных ошибок на работающем сайте.

Что делает закрытый ключ

Закрытый ключ доказывает, что сервер действительно владеет сертификатом. Во время установления соединения сервер подписывает данные рукопожатия этим ключом, а клиент проверяет подпись открытым ключом из сертификата. Если у злоумышленника есть только копия сертификата, подпись он сделать не сможет и соединение не состоится.

Отсюда следует главное правило: утечка сертификата ничем не грозит, утечка закрытого ключа означает, что кто-то может выдавать себя за сервер. В таком случае сертификат нужно отозвать, создать новую пару и выпустить новый документ. Простая замена файла на сервере не решает проблему, пока старый сертификат формально остаётся действительным.

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

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Сравнение по критериям: Сертификат или закрытый ключ в TLS

По безопасности: сертификат публичен и не требует защиты от чтения, но требует защиты от подмены; ключ требует ограниченных прав доступа, и лучше хранить его в отдельном каталоге с минимальными правами. По сложности настройки: сертификат нужно получить и вовремя продлевать, ключ создаётся один раз вместе с запросом на сертификат.

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

По срокам жизни: сертификат ограничен датой окончания, ключ формально бессрочен, но его разумно менять при каждом перевыпуске. Такая практика ограничивает ущерб от возможной незаметной утечки.

Типичные ошибки при работе с файлами

Самая частая ошибка — хранить закрытый ключ вместе с остальными файлами сайта в общем репозитории или папке, доступной нескольким людям. Со временем список людей, имевших к нему доступ, становится неизвестным, и уверенности в секретности нет.

Вторая ошибка — использовать один и тот же ключ годами и на нескольких серверах. Если ключ утёк с одного из них, под угрозой все. Разумнее выпускать отдельную пару для каждого сервера и менять её при перевыпуске.

Третья — путать форматы файлов. Один и тот же сертификат может лежать в текстовом виде с обрамлением или в двоичном, а иногда ключ и сертификат объединяют в один контейнер с паролем. Программе нужен конкретный формат, и несоответствие проявляется странными сообщениями о невозможности прочитать файл.

Что проверять, когда что-то не работает

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

Если же сервер не запускается и в журнале написано, что ключ не соответствует сертификату, значит, файлы принадлежат разным парам. Такое бывает после перевыпуска, когда новый сертификат положили рядом со старым ключом. Сверить пару можно, сравнив отпечатки открытых частей у обоих файлов.

При подозрении на утечку ключа не откладывайте перевыпуск: копия ключа позволяет подделать сервер, пока сертификат не истёк или не отозван.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
tlsсертификатышифрование

Часто задаваемые вопросы

Читайте также