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:
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:
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.