Мы используем клиентские сертификаты для аутентификации одного из наших клиентов.
Наша установка такова: у нас есть nginx перед приложением Django. В нашей конфигурации nginx у нас есть необходимые параметры, чтобы заставить работать фактическую проверку сертификата на стороне клиента ( ssl_client_certificate
и ssl_verify_client
т. Д.) И
uwsgi_param X-Client-Verify $ssl_client_verify;
uwsgi_param X-Client-DN $ssl_client_s_dn;
uwsgi_param X-SSL-Issuer $ssl_client_i_dn;
Это означает, что мы получаем значения этих переменных в наше приложение Django. Затем приложение Django использует эту информацию, чтобы определить, какой пользователь подключается, и авторизовать их.
Мы успешно использовали это в течение нескольких месяцев без каких-либо проблем, когда неожиданно начали получать сообщения о людях, которые не могут войти в систему с помощью сертификатов. Оказалось, что формат $ssl_client_s_dn
и $ssl_client_i_dn
ценностей изменилась, из формата слэш разделённых:
/C=SE/O=Some organziation/CN=Some CA
в формате через запятую:
CN=Some CA,O=Some organization,C=SE
Решить это было легко, но я не понимаю почему. Так что мои вопросы действительно:
- Откуда приходит ценность
$ssl_client_s_dn
? Это установлено nginx? Клиент? - Существует ли какая-либо документация / спецификация формата, который может иметь это значение, и имеет ли оно название?
источник