Estamos usando certificados do lado do cliente para autenticar um de nossos clientes.
Nossa configuração é a seguinte: Temos o nginx na frente de um aplicativo Django. Em nossa configuração nginx, temos os parâmetros necessários para que a verificação do certificado do lado do cliente funcione ( ssl_client_certificate
, ssl_verify_client
etc) 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;
o que significa que obtemos os valores dessas variáveis em nosso aplicativo Django. O aplicativo Django usa essas informações para identificar qual usuário está se conectando e autorizá-lo.
Nós o usamos com êxito há vários meses sem nenhum problema, quando de repente começamos a receber relatórios sobre pessoas que não conseguem fazer login usando os certificados. Aconteceu que o formato dos valores $ssl_client_s_dn
e $ssl_client_i_dn
havia mudado, de um formato separado por barra:
/C=SE/O=Some organziation/CN=Some CA
para um formato separado por vírgula:
CN=Some CA,O=Some organization,C=SE
Resolver isso foi fácil, mas não entendo o porquê. Então, minhas perguntas são realmente:
- De onde vem o valor
$ssl_client_s_dn
? É definido pelo nginx? O cliente? - Existe alguma documentação / especificação do formato que esse valor pode ter e possui um nome?