Configuração do Nginx SSL no Linux

Configuração do Nginx SSL no Linux

SSL (significa Secure Socket Layer) é um protocolo da Web que torna o tráfego entre servidor e cliente seguro, criptografando -o. Servidor e clientes transmitem com segurança o tráfego sem o risco de a comunicação ser interpretada por terceiros. Também ajuda o cliente a verificar a identidade do site com os quais está se comunicando.

Neste post, descreveremos como configurar o SSL para Nginx. Estaremos demonstrando o procedimento usando o certificado autoassinado. Um certificado autoassinado apenas criptografa a conexão, mas não valida a identidade do seu servidor. Portanto, deve ser usado apenas para testes de ambientes ou para serviços internos de LAN. Para o ambiente de produção, é melhor usar os certificados assinados pela CA (Autoridade de Certificação).

Pré-requisitos

Para este post, você deve ter os seguintes pré-requisitos:

  • Nginx já instalado em sua máquina
  • Bloco de servidor configurado para seu domínio
  • Usuário com privilégios sudo

O procedimento explicado aqui foi realizado em Debian 10 (Buster) máquina.

Etapa 1: gerando um certificado autoassinado

Nosso primeiro passo será gerar um certificado autoassinado. Emita o comando abaixo no terminal para gerar RSE (solicitação de assinatura de certificado) e uma chave:

$ sudo openssl req -x509 -Nodes -Days 365 -NewKey RSA: 2048 -Keyout/etc/ssl/privado/auto -assinado -nginx.chave --out/etc/ssl/certs/auto -designado -nginx.Crt

Você será solicitado a fornecer algumas informações, como nome do seu país, estado, localidade, nome comum (seu nome de domínio ou endereço IP) e endereço de e -mail.

No comando acima, o OpenSSL criará os dois arquivos a seguir:

  • CSR: auto-signo-nginx.Crt no /etc/ssl/cert/diretório
  • Chave: auto-signo-nginx.chave no /etc/ssl/diretório privado

Agora crie o dhparam.arquivo PEM Usando o comando abaixo:

$ sudo openssl dhparam -out/etc/ssl/certs/dhparam.PEM 2048

Etapa 2: Configurando o nginx para usar o SSL

Na etapa anterior, criamos a RSE e a chave. Agora, nesta etapa, configuraremos o nginx para usar o SSL. Para isso, criaremos um trecho de configuração e adicionaremos informações sobre nossos arquivos de certificado SSL e locais importantes.

Emitir o comando abaixo no terminal para criar um novo trecho de configuração auto-inscrito.arquivo conf no /etc/nginx/snippets.

$ sudo nano/etc/nginx/snippets/autoassinado.conf

No arquivo, adicione as seguintes linhas:

ssl_certificate/etc/ssl/certs/auto-signo-nginx.CRT;
ssl_certificate_key/etc/ssl/privado/auto-designado-nginx.chave;

O ssl_certificate está configurado para auto-signo-nginx.Crt (arquivo de certificado) enquanto o ssl_certificate_key está configurado para auto-signo-nginx.chave (Arquivo de chave).

Salvar e fechar o auto-inscrito.conf arquivo.

Agora vamos criar outro arquivo de snippet SSL-Params.conf e definir algumas configurações básicas de SSL. Emitir o comando abaixo no terminal para editar o SSL-Params.conf arquivo:

$ sudo nano/etc/nginx/snippets/ssl-params.conf

Adicione o seguinte conteúdo ao arquivo:

ssl_protocols tlsv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam/etc/ssl/certs/dhparam.PEM;
SSL_CIPHERS ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-RSA-RSA-RSA-RSA-RSA-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache compartilhado: ssl: 10m;
SSL_Session_Tickets OFF;
# ssl_stapling on;
# ssl_stapling_verify em;
Resolver 8.8.8.8 8.8.4.4 válido = 300s;
resolver_timeout 5s;
add_header x-frame-options nega;
add_header x-content-type-options nosniff;
add_header x-xss-proteção "1; mode = bloqueio";

Como não estamos usando um certificado assinado pela CA, portanto desativamos o grampeamento do SSL. Se você estiver usando um certificado assinado pela CA, descompor o ssl_stapling entrada.

Etapa 3: Configurando o Nginx para usar o SSL

Agora vamos abrir o arquivo de configuração do bloco de servidor nginx para fazer algumas configurações. Nesta etapa, assumiremos que você já configurou o bloco do servidor, que será semelhante a isso:

servidor
Ouça 80;
Ouça [::]: 80;
raiz/var/www/teste.org/html;
ÍNDICE ÍNDICE.Índice HTML.Índice HTM.nginx-debian.html;
Teste de servidor_name.org www.teste.org;
Localização /
try_files $ uri $ uri/ = 404;

Para abrir o arquivo de configuração do bloco do servidor nginx, use o comando abaixo:

$ sudo nano/etc/nginx/sites que estão disponíveis/teste.org

Agora modifique o existente servidor Bloco para fazer parecer assim:

servidor
Ouça 443 SSL;
Ouça [::]: 443 SSL;
Inclua trechos/autoassinados.conf;
Inclua trechos/SSL-params.conf;
raiz/var/www/teste.org/html;
ÍNDICE ÍNDICE.Índice HTML.Índice HTM.nginx-debian.html;
Teste de servidor_name.org www.teste.org;

Nas configurações acima, também adicionamos os trechos SSL auto-inscrito.conf e SSL-Params.conf que configuramos anteriormente.

Em seguida, adicione um Segundo servidor bloquear.

servidor
Ouça 80;
Ouça [::]: 80;
Teste de servidor_name.org www.teste.org;
retornar 302 https: // $ server_name $ request_uri;

Na configuração acima, retornar 302 redireciona o http para https.

Observação: Certifique -se de substituir o teste.org com seu próprio nome de domínio. Agora salve e feche o arquivo.

Etapa 4: permita o tráfego SSL através do firewall

Se um firewall estiver ativado no seu sistema, você terá que permitir o tráfego SSL através dele. Nginx fornece três perfis diferentes com UFW. Você pode vê -los usando o comando abaixo no terminal:

Lista de aplicativos $ sudo ufw

Você verá a seguinte saída com três perfis para o tráfego nginx.

Você precisará permitir o perfil "nginx completo" no firewall. Para fazer isso, use o comando abaixo:

$ sudo ufw permitir 'nginx completo'

Para verificar se o perfil foi permitido no firewall, use o comando abaixo:

$ sudo ufw status

Etapa 5: Teste o arquivo de configuração nginx

Agora teste o arquivo de configuração Nginx usando o comando abaixo no terminal:

$ sudo nginx -t

Você deve ver a saída abaixo.


Agora crie o vínculo simbólico entre sites disponíveis e habilitados para sites:

$ ln -s/etc/nginx/sites -disponível/teste.com/etc/nginx/sites habilitados/

Em seguida, reinicie o serviço Nginx para aplicar as alterações de configuração. Use o comando abaixo para fazer isso:

$ sudo systemctl reinicie nginx

Etapa 6: teste SSL

Agora, para testar o SSL, navegue para o seguinte endereço:

https: // endereço de domínio-or-ip

Como configuramos o certificado autoassinado, veremos um aviso de que a conexão não é segura. A página seguinte aparece ao usar o navegador Mozilla Firefox.

Clique no Avançado botão.

Clique Adicione exceção.

Então clique Confirme a exceção de segurança.

Agora você verá seu site HTTPS, mas com um sinal de aviso (trava com um sinal de aviso amarelo) sobre a segurança do seu site.

Além disso, verifique se o redirecionamento funciona corretamente acessando seu domínio ou endereço IP usando HTTP.

http: // endereço de domínio-or-iip

Agora, se o seu site redirecionar automaticamente para https, isso significa que o redirecionamento funcionou corretamente. Para configurar o redirecionamento permanentemente, edite o arquivo de configuração do bloco do servidor usando o comando abaixo no terminal:

$ sudo nano/etc/nginx/sites que estão disponíveis/teste.org

Agora mude o retorno 302 para retornar 301 no arquivo e depois salve e feche -o.

É assim que você pode configurar o SSL para Nginx no Sistema Debian 10. Configuramos o certificado autoassinado para demonstração. Se você estiver em um ambiente de produção, sempre vá para um certificado CA.