Como verificar várias listas de CRLs com a autenticação do cliente nginx?

5

Eu tenho uma configuração personalizada do easyrsa com uma raiz e três CAs assinadas pela raiz. (Três sub-cas diferentes, dependendo do tipo de usuário), assim:

RootCA
  +----- AdminUserCA
  +----- EmployeeCA
  +----- ClientCA

Eu tenho autenticação trabalhando com a seguinte configuração:

server {
  listen               127.0.0.1:443;
  server_name          www.acme.corp;
  ssl                  on;
  ssl_certificate      /data/src/easy-rsa/bundles/www.acme.corp_bundle.crt;
  ssl_certificate_key  /data/src/easy-rsa/whfWebCA/pki/private/www.acme.corp.key;
  add_header           Strict-Transport-Security "max-age=315360000; includeSubdomains";
  ssl_protocols        SSLv3 TLSv1;
  ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA;
  ssl_prefer_server_ciphers on;
  ssl_verify_client optional;
  ssl_client_certificate /data/src/easy-rsa/bundles/client_auth_ca_chain.crt;
  ssl_verify_depth 2;
  ssl_crl /data/src/easy-rsa/bundles/crls/all.pem;

  ...
}

O problema está na verificação da CRL. As CRLs são assinadas pela CA emissora, portanto, não podem ser associadas como certificados intermediários + certificados raiz.

Assim, o certificado de um usuário será emitido pela CA intermediária determinada, dependendo do tipo de usuário. O problema é que preciso realmente verificar quatro listas de CRL para serem efetivas. O nginx ssl_crl suporta apenas um único arquivo.

Então, minha pergunta é: é possível ter o nginx corretamente procurando por uma revogação de certificado de cliente nesta configuração sem ter que fazer o check-in em meu aplicativo?

    
por ErebusBat 07.01.2014 / 00:14

2 respostas

1

Sim, é possível. Basta concatenar várias CRLs codificadas por PEM em um único arquivo especificado na diretiva ssl_crl .

(Uma pergunta na lista de discussão nginx fez referência a essa pergunta. Postar a resposta aqui também.)

    
por 22.04.2014 / 19:58
0

Você precisa concatenar toda a CRL na cadeia: CA raiz e CAs intermediárias.

Usando openssl crl -in crl_list.crl -noout -text , leia somente o primeiro crl, mas o nginx os lê corretamente e valida o certificado do usuário.

Inspirado por: link

    
por 18.03.2015 / 18:02