Estamos utilizando certificados del lado del cliente para autenticar a uno de nuestros clientes.
Nuestra configuración es la siguiente: tenemos nginx frente a una aplicación Django. En nuestra configuración nginx, tenemos los parámetros necesarios para que funcione la verificación real del certificado del lado del cliente ( ssl_client_certificate
, ssl_verify_client
etc.) y
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;
lo que significa que obtenemos los valores de esas variables en nuestra aplicación Django. La aplicación Django luego usa esta información para identificar qué usuario se está conectando y autorizarlos.
Hemos estado usando esto con éxito durante varios meses sin ningún problema cuando de repente comenzamos a recibir informes sobre personas que no podían iniciar sesión con los certificados. Resultó que el formato de los valores $ssl_client_s_dn
y $ssl_client_i_dn
había cambiado, desde un formato separado por barras:
/C=SE/O=Some organziation/CN=Some CA
a un formato separado por comas:
CN=Some CA,O=Some organization,C=SE
Resolver esto fue fácil, pero no entiendo por qué. Entonces mis preguntas son realmente:
- ¿De dónde
$ssl_client_s_dn
viene el valor de ? ¿Lo establece nginx? ¿El cliente? - ¿Existe alguna documentación / especificación del formato que este valor puede tener y tiene un nombre?