Серверные и клиентские сертификаты TLS
У TLS нет отдельного универсального «клиент-серверного сертификата». Сертификат связывает открытый ключ с идентификационными данными и содержит подпись издателя. Важно различать серверный сертификат для проверки сервера и клиентский сертификат для проверки клиента при взаимной аутентификации.
Обычное соединение HTTPS
В типичном соединении с сертификатом сервер предъявляет цепочку, а клиент проверяет её по своим доверенным корневым сертификатам и проверяет соответствие имени сервера. Важны срок действия, ограничения назначения и правила проверки цепочки. Принять любую подпись или отключить проверку сертификатов — не эквивалент такой проверке.
Когда нужен клиентский сертификат
При взаимной TLS-аутентификации (mTLS) сервер дополнительно запрашивает сертификат клиента и проверяет его по собственной политике доверия. Это отдельная настройка: браузеру не требуется персональный клиентский сертификат для каждого обычного HTTPS-сайта. Успешная проверка сертификата не выдаёт автоматически все права в приложении — авторизацию всё равно определяет сервис.
Выпуск и подтверждение ключа
- Будущий владелец создаёт ключевую пару и запрос на выпуск сертификата. Закрытый ключ защищают; он не является публичной частью сертификата.
- Удостоверяющий центр проверяет запрос по процедуре для данного типа сертификата и подписывает сертификат своим ключом. Набор проверок зависит от политики центра и назначения.
- Владелец устанавливает сертификат и необходимые промежуточные сертификаты, сохраняя доступ к своему закрытому ключу.
- Во время TLS-обмена подпись CertificateVerify подтверждает владение соответствующим закрытым ключом; одной копии публичного сертификата для этого недостаточно.
Что проверять при ошибке
- Цепочку до доверенного центра, срок действия и корректность времени.
- Имя сервера для серверного сертификата и разрешённое назначение ключа.
- Для mTLS — запрашивает ли сервер клиентский сертификат и доверяет ли его издателю.
- Доступ приложения к закрытому ключу и правила отзыва сертификатов в используемой системе.
Сертификат служит аутентификации. Защиту передаваемых данных обеспечивают согласованные механизмы TLS; сертификат сам по себе не шифрует произвольные файлы и не гарантирует безопасность приложения.