Перейти к содержанию

Нюансы и пределы

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

Общий удостоверяющий центр сводит защиту к нулю

Самый важный предел, и он же самая частая ошибка настройки.

Сертификат wifi Alatyr выдаёт молча: это сертификат машины, за ним никто не сидит и подтверждать его некому. Сертификат user_mtls, наоборот, защищён отпечатком, PIN-кодом устройства или PIN-кодом карты. Но ваше приложение различает эти два сертификата только по одному признаку — кто их подписал.

Обычная настройка mTLS проверяет цепочку доверия и clientAuth. Оба сертификата это проходят, и владелец у них может быть записан один и тот же — так задумано, личность сквозная. Значит при общем удостоверяющем центре любая программа на машине предъявит вашему приложению сертификат wifi и войдёт как сотрудник, ничего у него не спросив. Подтверждение владельца при этом останется настроенным и не будет значить ничего.

Лечится это только двумя действиями сразу: развести центры (шаг 1 настройки) и включить проверку издателя в приложении (шаг 4). Одно без другого не работает.

emailProtection целей не разделяет

У user_mtls есть дополнительный emailProtection, которого нет у wifi, и кажется, что различать цели можно по нему. На практике — нет: типовые прокси не умеют требовать дополнительный EKU. Проверка EKU у них устроена как фильтр «годится ли сертификат для клиентской аутентификации вообще», а не как различитель целей.

Приложение не спрашивает Alatyr — и это осознанный размен

Ваше приложение проверяет всё у себя: цепочку доверия и список отзыва. Плюс — оно продолжает пускать сотрудников, даже когда сервер Alatyr недоступен. Минус — об отзыве оно узнаёт не мгновенно, а только после того, как обновит список. Как поставить обновление по расписанию.

PIN карты меняет устройство ключа, а не только вопрос человеку

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

Отсюда два следствия. Первое: у одной карты один ключ и один PIN на несколько сертификатов в разных ролях. Второе: без карты эта ступень недоступна — выбрать её «на будущее» не получится.

Отзыв не дотягивается до открытых сессий

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

Ключ остаётся на той машине, где создан

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

Что дальше

  • Настройка — вернуться к пошаговому порядку: что нажать в админке и что прописать в вашем приложении.
  • Отзыв доступа — забрать доступ и довести отзыв до вашего приложения, чтобы он подействовал.
  • Приёмники сертификатов — готовые настройки haproxy, nginx и OpenVPN, проверенные на живых приёмниках.