Чому формат nginx $ ssl_client_i_dn раптово змінився?


13

Ми використовуємо сертифікати на стороні клієнта для автентифікації одного з наших клієнтів.

Наша настройка така: у нас є 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 використовує цю інформацію, щоб визначити, який користувач підключається, і авторизувати їх.

Ми успішно використовуємо це вже кілька місяців без жодних проблем, коли раптом ми почали отримувати звіти про те, що люди не можуть увійти в систему за допомогою сертифікатів. Виявилося, що формат значень $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.