Etiqueta: ssl

  • Protejer o Nginx com o Let’s Encrypt no Debian 10

    Let’s Encrypt é uma autoridade de certificação (CA) que fornece uma maneira direta de obter e instalar certificados TLS / SSL gratuitos, possibilitando HTTPS criptografado em servidores da de páginas web.

    Pré-requisitos

    • Debian 10 server. (tutorial pendente)
    • Um nome de domínio registado. Podem fazê-lo em registrars como o dns.pt. (tutorial pendente)
    • Registos dos DNS configurados para o teu servidor. (tutorial pendente)
    • Nginx instalado. Segui a primeira parte da instalação no link a seguir (Instalar Linux, Nginx, MariaDB, PHP (LEMP stack) no Debian 10).

    1 – Instalar o Certbot

    Atualizar a lista de pacotes entes de qualquer instalação:

    sudo apt update

    Instalar o pacote python3-certbot-nginx, se tudo correr normal, os pacotes dependentes também serão instalados:

    sudo apt install python3-certbot-nginx

    Pergunta se queremos instalar o pacote e dependencias, clicamos em <enter>.

    O Certbot está pronto para ser usado, mas para configurar o SSL no Nginx, precisamos verificar algumas das configurações do Nginx.

    2 – Verificar configuraçães do Nginx

    Se o nginx estiver configurado como diz no tutorial colocado em pré-requisitos, devemos ter a configuração com caminho “/etc/nginx/sites-available/o.teu.dominio“. Para verificar e se necessário alterar, fazer:

    sudo nano /etc/nginx/sites-available/o.teu.dominio

    É apresentado o editor de ficheiros “nano” com o conteúdo do caminho colocado à frente do nome do editor.

    Encontrar a linha com a diretiva “server_name” e verificar se tem os domínios corrects que queremos usar como nomes comuns nos certificados.

    #...outras diretivas e programas antes
    server_name o.teu.dominio www.o.teu.dominio;
    #...outras diretivas e programas depois

    Se está correto só é necessário fechar com “ctrl+x” no teclado. Caso os domínios não forem os corretos, proceder com as alterações e guardar e fechar com “ctrl+x” carregar em “Y” ou “S” (depende da configuração da linguagem) e então carregar em <enter> para guardar no caminho apresentado.

    Testar a configuração:

    sudo nginx -t

    Se as mensagens apresentarem erros, fazer verificação do ficheiro de configuração. Caso apresente configuração com sucesso proceder ao reinício do serviço nginx:

    sudo systemctl reload nginx

    Com esta configuração o Certbot pode encontrar o bloco de servidor correto e atualizá-lo. Que será o próximo passo.

    Nota: a esta altura já deveríamos ter a firewall do servidor configurada para permitir tráfego seguro, porta 443. Caso não esteja, fazer as alterações necessárias que podem ver na ligação que está em pré.requisitos na instalação do nginx.

    3 – Obter o certificado SSL

    O Certbot tem a possibilidade de obter certificados através de plugins (software adicional). O plugin do nginx “--nginx” toma conta da configuração dos certificados no(s) servidor(s) que correspondem aos domínios colocados em argumento (“-d“) e faz o reinício do servidor, se necessário, como vamos poder ver a seguir:

    sudo certbot --nginx -d o.teu.dominio -d www.o.teu.dominio -d outros.dominios.se.necessario

    Se tivermos sucesso, o Certbot perguntará como desejamos definir as configurações de HTTPS.

    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
    new sites, or if you're confident your site works on HTTPS. You can undo this
    change by editing your web server's configuration.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

    Se estamos aqui é porque não estamos muito acostumados com a criação de certificados ou porque o queremos fazer de forma mais rápida. Sendo assim a resposta será a “2” e pressionamos <enter> . Se tudo funcionar bem iremos obter algo como:

    Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/o.teu.dominio
    Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/o.teu.dominio
    Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/o.teu.dominio
    nginx: [warn] "ssl_stapling" ignored, issuer certificate not found for certificate "/etc/ssl/certs/nginx-selfsigned.crt"
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Congratulations! You have successfully enabled https://o.teu.dominio,
    https://www.o.teu.dominio, and https://outros.dominios.se.necessario
    
    You should test your configuration at:
    https://www.ssllabs.com/ssltest/analyze.html?d=o.teu.dominio
    https://www.ssllabs.com/ssltest/analyze.html?d=www.o.teu.dominio
    https://www.ssllabs.com/ssltest/analyze.html?d=outros.dominios.se.necessario
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/o.teu.dominio/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/o.teu.dominio/privkey.pem
       Your cert will expire on 2020-03-05. To obtain a new or tweaked
       version of this certificate in the future, simply run certbot again
       with the "certonly" option. To non-interactively renew *all* of
       your certificates, run "certbot renew"
     - Your account credentials have been saved in your Certbot
       configuration directory at /etc/letsencrypt. You should make a
       secure backup of this folder now. This configuration directory will
       also contain certificates and private keys obtained by Certbot so
       making regular backups of this folder is ideal.
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le

    Nota: Se o nosso servidor estiver com um certificado auto-assinado, pode aparecer uma aviso que será ignorado mas devemos comentá-las:

    sudo nano /etc/nginx/sites-available/o.teu.dominio

    Colocar um “#” antes das linhas “include snippets/auto-assinado.conf;”  e  “include snippets/ssl-params.conf;” e passam a ser ignoradas:

    #...    
    #include snippets/auto-assinado.conf;
    #include snippets/ssl-params.conf;
    #...

    Guardar e fechar com “ctrl+x” carregar em “Y” ou “S” (depende da configuração da linguagem) e carregar em <enter> para guardar no caminho apresentado. Testar com:

    sudo nginx -t

    Reiniciar o servidor:

    sudo systemctl reload nginx

    Neste momento já devemos ter uma página com certificado Let’s Encrypt válido por 90 días e com o programados de tarefas “cron” configurado para que seja feita a renovação. Para verificar , fazer:

    cat /etc/cron.d/certbot

    Até à próxima…

  • Criar um certificado SSL auto-assinado para Nginx no Debian 10

    TLS, ou transport layer security (segurança da camada de transporte), e seu antecessor SSL, que significa secure sockets layer (camada de soquetes seguros), são protocolos da internet usados ​​para encriptar o tráfego normal num invólucro protegido.

    Pré-requisitos:

    • Servidor Debian 10 “buster”, utilizador que não seja root mas que tenha privilégios de sudo. E para melhor segurança com uma Firewall ativa. No Debian 10 o pacote ufw vem instalado mas desativado.
    • O nginx instalado. Seguir a parte do tutorial em “Instalar Linux, Nginx, MariaDB, PHP (LEMP stack) no Debian 10“.
    (mais…)