Ми використовуємо сертифікати на стороні клієнта для автентифікації одного з наших клієнтів.
Наша настройка така: у нас є 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
Вирішити це було просто, але я не розумію, чому. Тож мої запитання справді:
- Звідки береться значення
$ssl_client_s_dn
? Це встановлено nginx? Клієнт? - Чи є документація / специфікація формату, яке може мати це значення і чи має воно ім'я?