Por que o formato de nginx $ ssl_client_i_dn mudou de repente?

11

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:

  1. De onde vem o valor de $ssl_client_s_dn ? É definido pelo nginx? O cliente?
  2. Existe alguma documentação / especificação do formato que este valor pode ter e tem um nome?
por Patrik Stenmark 31.01.2017 / 21:46

1 resposta

13

Eles mudaram porque o nginx os alterou no release 1.11.6. Como mostrado no changelog:

    *) 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 você quiser evitar esse tipo de coisa, você deve ficar com versões estáveis, ao invés de versões instáveis da linha principal. De qualquer forma, você deve testar primeiro antes de atualizar cegamente a produção.

    
por 31.01.2017 / 21:55