Perché il formato di nginx $ ssl_client_i_dn è cambiato improvvisamente?


13

Utilizziamo certificati lato client per autenticare uno dei nostri clienti.

La nostra configurazione è questa: abbiamo nginx davanti a un'applicazione Django. Nella nostra configurazione nginx, abbiamo i parametri richiesti per far funzionare l'effettiva verifica del certificato lato client ( ssl_client_certificate, ssl_verify_clientecc.) E

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;

il che significa che otteniamo i valori di tali variabili nella nostra app Django. L'app Django utilizza quindi queste informazioni per identificare l'utente che si sta connettendo e autorizzarle.

Lo usiamo con successo da diversi mesi senza alcun problema quando all'improvviso abbiamo iniziato a ricevere rapporti su persone che non erano in grado di accedere utilizzando i certificati. Si è scoperto che il formato dei valori $ssl_client_s_dne $ssl_client_i_dnera cambiato, da un formato separato da barra:

 /C=SE/O=Some organziation/CN=Some CA

in un formato separato da virgole:

CN=Some CA,O=Some organization,C=SE

Risolvere questo è stato facile, ma non capisco perché. Quindi le mie domande sono davvero:

  1. Da dove viene il valore di $ssl_client_s_dn? È impostato da nginx? Il cliente?
  2. Esiste una documentazione / specifica del formato che può avere questo valore e ha un nome?

Risposte:


18

Sono cambiati perché nginx li ha cambiati nella versione 1.11.6. Come mostrato nel log delle modifiche:

    *) 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.

Se si desidera evitare questo genere di cose, è necessario attenersi alle versioni stabili, piuttosto che alle versioni della linea principale instabili. Ad ogni modo, dovresti testare prima di aggiornare ciecamente la produzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.