Configure a conexão segura com o certificado nginx e startssl

1

Eu me registrei no startssl.com e retrivigi 4 arquivos para o meu domínio:

  • ssl.key - o arquivo de chave privada
  • ssl.crt - o arquivo de certificado
  • ca.pem - CA raiz
  • sub.class1.server.ca.pem - certificado da CA do Servidor Intermédio da Classe 1

para remover a senha que eu fiz:

openssl rsa -in ssl.key -out ssl.key.nopwd

Depois, eu configuro minha configuração nginx:

server {
    listen 443 ssl;
    ssl on;

    ssl_certificate /etc/nginx/ssl/ssl.crt;
    ssl_certificate_key /etc/nginx/ssl/ssl.key.nopwd;
    keepalive_timeout 70;
    fastcgi_param SSL_VERIFIED $ssl_client_verify;
    fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
    fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
    fastcgi_param SSL_DN $ssl_client_s_dn;

    server_name ***;
    root /var/www/***;
}

Após o nginx reiniciado, posso entrar com sucesso no meu site via https. Mas agora eu quero proteger meu site e dar acesso a ele apenas com certificado, instalado em um navegador do cliente. Pelo que entendi devo configurá-lo em nginx config:

ssl_client_certificate    etc/nginx/ssl/[WHAT_SHOULD_BE_HERE?]
ssl_verify_client         on;

Mas para qual arquivo devo apontar? Como posso gerar um certificado de cliente do servidor?

    
por folibis 27.11.2015 / 03:37

1 resposta

1

Por favor, dê uma olhada em esta resposta . Mas aqui está a versão curta do que precisa acontecer:

  1. Usar ssl.crt como ele não é bom o suficiente, você deve concatenar ssl.crt + CA (s) intermediária + CA raiz (nesta ordem) em um único arquivo e usar esse arquivo na instrução ssl_certificate .

  2. Você precisa consolidar CA (s) intermediárias + CA raiz do seu certificado CLIENTE em um único arquivo e adicioná-lo à instrução ssl_client_cerificate .

  3. Regra de configuração opcional, mas altamente recomendada, de quais nomes de assunto de certificado de cliente você precisa (por exemplo, CN, O, OU, DC etc.) analisando $ssl_client_s_dn variable.

  4. Também é altamente recomendável ativar o grampeamento OSCP combinando CAs intermediárias + CA raiz do SERVER e adicionando-as à declaração ssl_trusted_certificate da seguinte forma:

    ssl_trusted_certificate /etc/nginx/ssl/ocsp-chain.crt;
    ssl_stapling on;
    ssl_stapling_verify on;
    
  5. Você também pode querer passar as informações do certificado para o seu módulo fastcgi:

    ...
    fastcgi_param   VERIFIED $ssl_client_verify;
    fastcgi_param   DN $ssl_client_s_dn;
    ...
    
por 27.11.2015 / 04:58