Почему формат nginx $ ssl_client_i_dn внезапно изменился?


12

Мы используем клиентские сертификаты для аутентификации одного из наших клиентов.

Наша установка такова: у нас есть 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

Решить это было легко, но я не понимаю почему. Так что мои вопросы действительно:

  1. Откуда приходит ценность $ssl_client_s_dn? Это установлено nginx? Клиент?
  2. Существует ли какая-либо документация / спецификация формата, который может иметь это значение, и имеет ли оно название?

Ответы:


18

Они изменились, потому что nginx изменил их в выпуске 1.11.6. Как показано в журнале изменений:

    *) Change: format of the $ssl_client_s_dn and $ssl_client_i_dn variables
       has been changed to follow RFC 2253 (RFC 4514); values in the old
       format are available in the $ssl_client_s_dn_legacy and
       $ssl_client_i_dn_legacy variables.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.