@dronmaxman
VoIP Administrator

Как авторизовать пользователя по сертификату в NGINX с проверкой CN?

Все добрый день.
Появилась задачка настроить доступ пользователей к ресурсам компании по сертификатам на базе NGINX.
Хочу дополнительно к проверке сертификата добавить проверку CN="test_user01" в сертификате, для возможности разграничения доступа к ресурсам на основании групп в AD.
В nginx есть переменная $ssl_client_s_dn, которая возвращает что-то такое "/DC=org/DC=testdomain/OU=Spec/OU=Admin/CN=test_user01".

Можно выгружать список пользователей из AD по cron, но как потом сравнить данные из этого списка с CN из сертификата? Куда допать?)
  • Вопрос задан
  • 1780 просмотров
Решения вопроса 1
CN из $ssl_client_s_dn можно достать с помощью map, например в nginx.conf пишем:

map $ssl_client_s_dn $ssl_client_s_dn_cn {
	default "";
	~/CN=(?<CN>[^/]+) $CN;
}


в vhost мы можем использовать переменную $ssl_client_s_dn_cn для своих нужд, например для выставления заголовка
server {
...
proxy_set_header X-CLIENT-SSL-CN $ssl_client_s_dn_cn;
...
}

далее заголовок X-CLIENT-SSL-CN легко проверяется в самом web-приложении с нужным списком CN

Возможен и другой вариант - это написание логики проверки CN на самом nginx например с использованием njscript.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
скрипты
повершелл, если винда, баш/питон, если нет
Ответ написан
nmk2002
@nmk2002
работаю в ИБ
Можно использовать сервер аутентификации, который будет при доступе к ресурсу проверять сертификат пользователя на валидность и на принадлежность к группам в LDAP, а при необходимости и другие параметры учесть, например, разрешенных IP-адресов или дату/время доступа. Достаточно стандартная задача.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы