SSL (significa secure socket layer) é um protocolo da web que torna o tráfego entre o servidor e o cliente seguro, criptografando-o. O servidor e os clientes transmitem o tráfego com segurança, sem o risco de a comunicação ser interpretada por terceiros. Também ajuda o cliente a verificar a identidade do site com o qual está se comunicando.
Nesta postagem, descreveremos como configurar 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, ele deve ser usado apenas para ambientes de teste ou para serviços de LAN internos. Para o ambiente de produção, é melhor usar os certificados assinados pela CA (autoridade de certificação).
Pré-requisitos
Para esta postagem, 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
Nossa primeira etapa será gerar um certificado autoassinado. Emita o comando abaixo no Terminal para gerar CSR (Solicitação de Assinatura de Certificado) e uma chave:
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.key -out / etc / ssl / certs / selfsigned-nginx.crtVocê será solicitado a fornecer algumas informações como nome de 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: selfsigned-nginx.crt no no no / etc / ssl / cert / diretório
- Chave: selfsigned-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 2048Etapa 2: configurar o Nginx para usar SSL
Na etapa anterior, criamos o CSR e a chave. Agora nesta etapa, vamos configurar o Nginx para usar SSL. Para isso, criaremos um snippet de configuração e adicionaremos informações sobre nossos arquivos de certificado SSL e localizações de chaves.
Emita o comando abaixo no Terminal para criar um novo trecho de configuração autoassinado.arquivo conf no / etc / nginx / snippets.
$ sudo nano / etc / nginx / snippets / autoassinado.confNo arquivo, adicione as seguintes linhas:
ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;ssl_certificate_key / etc / ssl / private / selfsigned-nginx.chave;
O ssl_certificate está configurado para selfsigned-nginx.crt (arquivo de certificado) enquanto o ssl_certificate_key está configurado para selfsigned-nginx.chave (arquivo de chave).
Salve e feche o autoassinado.conf Arquivo.
Agora vamos criar outro arquivo de snippet ssl-params.conf e definir algumas configurações básicas de SSL. Emita o comando abaixo no Terminal para editar o ssl-params.conf Arquivo:
$ sudo nano / etc / nginx / snippets / ssl-params.confAdicione o seguinte conteúdo ao arquivo:
ssl_protocols TLSv1.2;ssl_prefer_server_ciphers ativado;
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-AES256;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache compartilhado: SSL: 10m;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
resolvedor 8.8.8.8 8.8.4.4 válido = 300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; modo = bloco";
Como não estamos usando um certificado assinado por CA, desativamos o grampeamento SSL. Se você estiver usando um certificado assinado por CA, descomente o ssl_stapling entrada.
Etapa 3: Configurar o Nginx para usar SSL
Agora vamos abrir o arquivo de configuração do bloco do servidor Nginx para fazer algumas configurações. Nesta etapa, assumiremos que você já configurou o bloco de servidor, que será semelhante a este:
servidorescute 80;
ouvir [::]: 80;
root / var / www / test.org / html;
índice de índice.índice html.índice htm.nginx-debian.html;
server_name test.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-available / test.orgAgora modifique o existente servidor bloco para torná-lo parecido com este:
servidorouvir 443 ssl;
ouvir [::]: 443 ssl;
incluir snippets / autoassinado.conf;
incluir snippets / ssl-params.conf;
root / var / www / test.org / html;
índice de índice.índice html.índice htm.nginx-debian.html;
server_name test.org www.teste.org;
Nas configurações acima, também adicionamos os snippets SSL autoassinado.conf e ssl-params.conf que configuramos anteriormente.
Em seguida, adicione um segundo servidor quadra.
servidorescute 80;
ouvir [::]: 80;
server_name test.org www.teste.org;
return 302 https: // $ server_name $ request_uri;
Na configuração acima, retorno 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: permitir tráfego SSL por meio do firewall
Se um firewall estiver habilitado em seu sistema, você terá que permitir o tráfego SSL através dele. Nginx oferece três perfis diferentes com ufw. Você pode visualizá-los usando o comando abaixo no Terminal:
lista de aplicativos $ sudo ufwVocê verá a seguinte saída com três perfis para o tráfego Nginx.
Você precisará permitir o perfil “Nginx Full” no firewall. Para fazer isso, use o comando abaixo:
$ sudo ufw allow 'Nginx Full'Para verificar se o perfil foi permitido no firewall, use o comando abaixo:
$ sudo ufw statusEtapa 5: teste o arquivo de configuração NGINX
Agora teste o arquivo de configuração Nginx usando o comando abaixo no Terminal:
$ sudo nginx -tVocê deve ver a saída abaixo.
Agora crie o link simbólico entre sites disponíveis e 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 restart nginxEtapa 6: teste SSL
Agora, para testar o SSL, navegue até o seguinte endereço:
https: // domínio ou endereço IP
Como configuramos o certificado autoassinado, veremos um aviso de que a conexão não é segura. A página a seguir 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 alerta (cadeado com um sinal de alerta 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: // domínio ou endereço IP
Agora, se o seu site redireciona automaticamente para HTTPS, isso significa que o redirecionamento funcionou corretamente. Para configurar o redirecionamento permanentemente, edite o arquivo de configuração do bloco de servidor usando o comando abaixo no Terminal:
$ sudo nano / etc / nginx / sites-available / test.orgAgora mude o retorno 302 para retornar 301 no arquivo e, em seguida, salve e feche-o.
É assim que você pode configurar SSL para Nginx no sistema Debian 10. Configuramos o certificado autoassinado para demonstração. Se você estiver em um ambiente de produção, sempre procure um certificado CA.