Skip to content
EN

Что такое mTLS

Коротко:

mTLS (mutual TLS) — режим TLS, в котором не только сервер, но и клиент предъявляет сертификат. Сервер проверяет client cert против trusted CA list → принимает решение о доступе. Use cases: service-to-service в microservices, API Gateway с client certs, банкинг и госуслуги с CryptoPro, Zero Trust architectures. Сложнее обычного HTTPS — нужна инфраструктура CA + rotation.

Ниже: подробности, пример, смежные термины, FAQ.

Проверить SSL своего сайта →

Подробности

  • Server config: ssl_verify_client on; + ssl_client_certificate ca.pem;
  • Client config: curl --cert client.pem --key client.key
  • Certificate chain: client cert должен быть подписан trusted CA
  • TLS 1.3: использует CertificateRequest в handshake, не renegotiation
  • Revocation: OCSP или CRL для отозванных client certs

Пример

nginx:
  ssl_verify_client on;
  ssl_client_certificate /etc/ssl/ca.pem;
  # $ssl_client_s_dn содержит subject client cert

Смежные термины

Что такое mTLS?

mTLS (mutual TLS) — это расширение протокола TLS, обеспечивающее взаимную аутентификацию между клиентом и сервером. В отличие от стандартного TLS, где только сервер подтверждает свою личность, mTLS требует, чтобы обе стороны обменивались сертификатами, тем самым повышая уровень безопасности. Это особенно важно в распределенных системах, где необходимо удостовериться не только в подлинности сервера, но и клиента.

Как настроить mTLS: шаг за шагом

Настройка mTLS требует выполнения нескольких шагов, включая создание сертификатов, настройку серверной и клиентской конфигурации. Рассмотрим пример настройки mTLS на сервере Nginx и клиенте cURL.

Шаг 1: Создание сертификатов

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

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 500

Шаг 2: Настройка Nginx

Теперь отредактируйте конфигурацию Nginx для использования mTLS:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/server.key;
    ssl_client_certificate /path/to/rootCA.pem;
    ssl_verify_client on;
}

Шаг 3: Настройка клиента

Теперь, когда сервер настроен, настроим клиента. Используйте следующую команду cURL для тестирования:

curl -v -s --key /path/to/client.key --cert /path/to/client.crt --cacert /path/to/rootCA.pem https://example.com

Если все настроено правильно, вы получите ответ от сервера, подтверждающий успешную аутентификацию.

Преимущества и недостатки mTLS

mTLS обеспечивает высокий уровень безопасности благодаря взаимной аутентификации, что делает его идеальным для защищенных API, IoT-устройств и микросервисов. Однако, есть и недостатки, которые стоит учитывать.

Преимущества mTLS

  • Высокий уровень безопасности: Защита от атак типа "человек посередине" (MITM).
  • Контроль доступа: Только проверенные клиенты могут получить доступ к серверу.
  • Упрощенное управление идентификацией: Централизованное управление сертификатами позволяет легко обновлять и отзывать доступ.

Недостатки mTLS

  • Сложность настройки: Необходимость управления сертификатами может усложнить процесс внедрения.
  • Производительность: Дополнительные накладные расходы на аутентификацию могут повлиять на производительность.
  • Управление сертификатами: Требуется регулярное обновление и отзыв сертификатов, что может быть трудоемким процессом.

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

СертификатСрок, издатель, домены (SAN)
ЦепочкаПроверка промежуточных и корневых CA
TLS-протоколВерсия TLS и набор шифров
УязвимостиHeartbleed, POODLE, слабые шифры

Почему нам доверяют

TLS 1.3
поддержка
Полная
цепочка CA
<2с
результат
30/14/7
дней до истечения

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

1

Введите домен

2

Проверка цепочки TLS

3

Дата истечения и уязвимости

Что проверяет SSL-тест?

SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.

Детали сертификата

Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).

Цепочка доверия

Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.

Анализ TLS

Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).

Оповещения об истечении

Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.

DV vs OV vs EV сертификаты

DV (Domain Validation)
  • Подтверждение только владения доменом
  • Выдаётся за минуты автоматически
  • Бесплатно через Let's Encrypt
  • Подходит для большинства сайтов
  • Самый распространённый тип
OV / EV
  • Проверка организации (OV) или расширенная проверка (EV)
  • Выдаётся за 1-5 рабочих дней
  • Стоимость от $50 до $500/год
  • Для финансов, e-commerce, госсайтов
  • Повышает доверие пользователей

Кому это нужно

DevOps

мониторинг SSL-сертификатов

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

аудит TLS-конфигурации

SEO

HTTPS как фактор ранжирования

E-commerce

доверие покупателей

Частые ошибки

Истёкший сертификатБраузеры блокируют сайт с истёкшим SSL. Настройте автопродление или мониторинг.
Неполная цепочка сертификатовБез промежуточного CA некоторые браузеры и боты не смогут верифицировать сертификат.
Mixed content на HTTPS-сайтеHTTP-ресурсы на HTTPS-странице — замок в браузере пропадает, снижается доверие.
Использование TLS 1.0/1.1Устаревшие версии TLS содержат известные уязвимости. Используйте TLS 1.2+ или 1.3.
Несовпадение домена в сертификатеСертификат должен покрывать все домены сайта, включая www и поддомены.

Лучшие практики

Настройте автопродлениеLet's Encrypt + certbot с cron — сертификат обновляется автоматически каждые 60-90 дней.
Включите HSTSЗаголовок Strict-Transport-Security заставляет браузер всегда использовать HTTPS.
Используйте TLS 1.3TLS 1.3 быстрее (1-RTT handshake) и безопаснее — убраны устаревшие шифры.
Мониторьте срок действияСоздайте монитор на Enterno.io — получайте уведомления задолго до истечения.
Проверяйте цепочку после обновленияПосле обновления сертификата убедитесь, что промежуточные сертификаты установлены.

Получите больше с бесплатным аккаунтом

Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.

Зарегистрироваться (FREE)

Больше по теме

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

mTLS vs API-key?

mTLS — cryptographic proof ownership private key. API-key — строка, уязвимая к leak. mTLS безопаснее, но сложнее в rotation.

Как распространять client certs?

Automated issuance через internal CA (Vault, Smallstep), ротация каждые 30-90 дней. Для external partners — manual process.

Работает ли в браузерах?

Да. Browser показывает UI выбора cert из OS store. Chrome + macOS — TouchID для unlock.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.