Estamos usando certificados do lado do cliente para autenticar um de nossos clientes.
Nossa configuração é a seguinte: Nós temos o nginx na frente de um aplicativo Django. Em nossa configuração do nginx, temos os parâmetros necessários para que a verificação real 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, em seguida, usa essas informações para identificar qual usuário está se conectando e autorizando-as.
Temos usado isso com sucesso por vários meses sem nenhum problema quando, de repente, começamos a receber relatórios sobre pessoas que não conseguiam fazer login usando os certificados. Descobrimos que o formato dos valores $ssl_client_s_dn
e $ssl_client_i_dn
foi alterado, a partir 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 de
$ssl_client_s_dn
? É definido pelo nginx? O cliente?
- Existe alguma documentação / especificação do formato que este valor pode ter e tem um nome?