Все статьи о SSL SSL и сертификаты

Что такое Mutual TLS (mTLS)? Аутентификация по клиентскому сертификату

В обычном HTTPS только сервер подтверждает свою личность с помощью сертификата. Клиент (браузер) остаётся анонимным — сервер не знает, кто подключается.

Mutual TLS (mTLS) добавляет второй шаг: клиент тоже предъявляет сертификат. Обе стороны аутентифицируют друг друга. Сервер проверяет сертификат клиента по доверенному удостоверяющему центру (CA), а клиент проверяет сертификат сервера — отсюда название «взаимный» (mutual).

Обычный TLS vs Mutual TLS

Обычный TLSMutual TLS (mTLS)
Сервер подтверждает личность✅ Сертификат + подпись CA✅ То же самое
Клиент подтверждает личность❌ Анонимный✅ Клиентский сертификат
АутентификацияОдносторонняя (только сервер)Двусторонняя (оба)
Сценарий использованияПубличные веб-сайтыВнутренние API, zero trust
Клиенту требуетсяТолько браузерСертификат + закрытый ключ
Сложность настройкиСтандартнаяВыше — нужно управлять клиентскими сертификатами

Когда использовать mTLS

Коммуникация между сервисами

Микросервисы, взаимодействующие друг с другом по сети. mTLS гарантирует, что подключаться могут только авторизованные сервисы — а не любой, кто знает URL.

Service A ←──mTLS──→ Service B
Оба проверяют: «Ты тот, за кого себя выдаёшь?»

Архитектура Zero Trust

В Zero Trust ни одно сетевое соединение не является доверенным по умолчанию — даже внутри корпоративной сети. mTLS заменяет доверие на сетевом уровне (файрволы, VPN) на доверие на уровне идентификации (сертификаты).

Безопасность API

Защита конфиденциальных API за пределами простых API-ключей. Украденный API-ключ может использовать кто угодно. Клиентский сертификат привязан к конкретному закрытому ключу — его сложнее украсть и использовать.

Аутентификация IoT-устройств

Устройства подключаются к серверу с клиентскими сертификатами, установленными в процессе производства. Сервер знает, что взаимодействует с подлинным устройством, а не с поддельным.

Как работает mTLS

  1. Клиент подключается и инициирует TLS-рукопожатие (так же, как в обычном TLS)
  2. Сервер отправляет свой сертификат — клиент его проверяет (так же, как в обычном TLS)
  3. Сервер запрашивает клиентский сертификат — отправляет сообщение CertificateRequest
  4. Клиент отправляет свой сертификат — сервер проверяет его по доверенному CA
  5. Обе стороны вычисляют сеансовые ключи и начинается зашифрованная связь

Шаги 3-4 — это то, что делает процесс «взаимным».

Конфигурация mTLS в Nginx

server {
    listen 443 ssl;
    server_name api.example.com;

    # Сертификат сервера (так же, как в обычном HTTPS)
    ssl_certificate     /etc/ssl/server-fullchain.pem;
    ssl_certificate_key /etc/ssl/server-privkey.pem;

    # Проверка клиентского сертификата
    ssl_client_certificate /etc/ssl/client-ca.pem;  # CA, подписавший клиентские сертификаты
    ssl_verify_client on;                            # Требовать клиентский сертификат

    # Опционально: передать информацию о клиентском сертификате в приложение
    proxy_set_header X-Client-DN $ssl_client_s_dn;
    proxy_set_header X-Client-Verify $ssl_client_verify;
}

mTLS vs другие методы аутентификации

МетодУровень безопасностиСложностьЛучше всего для
API-ключНизкий (можно передать)НизкаяПубличные API, ограничение частоты запросов
OAuth/JWTСреднийСредняяAPI для пользователей
mTLSВысокий (криптографически привязан)ВысокаяВзаимодействие сервисов, zero trust
mTLS + JWTНаивысшийВысокаяАутентификация на транспортном и прикладном уровне

mTLS и GetHTTPS

GetHTTPS выпускает серверные сертификаты — сертификаты, которые ваш веб-сервер использует для подтверждения своей личности. Это стандартные SSL-сертификаты, используемые каждым HTTPS-сайтом.

Клиентские сертификаты для mTLS обычно выпускаются частным CA (внутренним удостоверяющим центром вашей организации), а не публичным CA вроде Let’s Encrypt. Let’s Encrypt не выпускает клиентские сертификаты — он выпускает только серверные сертификаты для публичных доменов.

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

Можно ли использовать Let’s Encrypt для mTLS?

Для серверного сертификата: да. Для клиентских сертификатов: нет. Клиентские сертификаты должны выпускаться частным CA, которым вы управляете — чтобы вы решали, какие клиенты авторизованы. Инструменты вроде openssl, cfssl или step-ca могут выступать в роли вашего частного CA.

mTLS — это то же самое, что «аутентификация по клиентскому сертификату»?

Да. «Mutual TLS», «mTLS», «двусторонний TLS» и «аутентификация по клиентскому сертификату» — всё это относится к одному и тому же — обе стороны предъявляют сертификаты во время TLS-рукопожатия.

mTLS заменяет API-ключи?

Может, но они служат разным целям. mTLS подтверждает идентификацию на транспортном уровне (какой сервис подключается). API-ключи/JWT подтверждают идентификацию на прикладном уровне (какой пользователь/разрешение). Многие системы используют оба подхода вместе для эшелонированной защиты.

Где mTLS обычно используется?

Kubernetes (service mesh с Istio/Linkerd), Cloudflare Access, AWS API Gateway (mutual TLS), Google Cloud BeyondCorp и большинство корпоративных реализаций zero-trust.

Похожие статьи

SSL и сертификаты 2026-05-07
Как работает SSL/TLS: TLS-рукопожатие в деталях
Наглядное объяснение TLS-рукопожатия -- как ваш браузер и сервер устанавливают зашифрованное соединение за миллисекунды. Охватывает TLS 1.2, TLS 1.3, возобновление сеанса и прямую секретность.
SSL и сертификаты 2026-05-08
Криптография с открытым ключом: как на самом деле работает шифрование SSL
Криптография с открытым ключом использует пару ключей — один открытый, один закрытый — для защиты HTTPS-соединений. Узнайте, как асимметричное шифрование, цифровые подписи и обмен ключами делают SSL/TLS возможным.
SSL и сертификаты 2026-05-08
Что такое SSL-сертификат?
SSL-сертификат — это цифровой файл, удостоверяющий подлинность сайта и обеспечивающий зашифрованное HTTPS-соединение. Узнайте, что содержит сертификат, как он работает, как получить его бесплатно и почему он нужен каждому сайту.
Получите бесплатный SSL-сертификат в браузере
Без установки, без аккаунта. Ваш приватный ключ никогда не покидает устройство.
Получить сертификат