Tabela de Conteúdos
3.5.2 Certificados LetsEncrypt
Para estabelecer uma ligação segura e de confiança é necessário gerar certificados que atestem a identidade do servidor. Esses certificados são geralmente emitidos por entidades certificadoras (Certificate Authority) independentes e de confiança reconhecida. Uma dessas autoridades é a organização Let’s Encrypt.
A Let’s Encrypt apenas emite certificados para domínios registados e devidamente configurados. Para mais informações consulte Let’s Encrypt.
Instalação
root@server:~# apt install certbot
Geração dos certificados
O certbot
usa as portas 80
(http) ou 443
(https) durante o processo de geração ou renovação de certificados. Caso algum servidor web esteja a utilizar estas portas, o serviço deve ser parado previamente.
Os serviços podem ser parados e reiniciados pelo certbot
quando necessário se forem utilizadas as opções –pre-hook “service <serviço> stop”
e –post-hook “service <serviço> start”
.
O certbot
é um utilitário que facilita a emissão e renovação dos certificados Let’s Encrypt. Neste exemplo é pedido um certificado para o domínio home.example.com:
root@server:~# certbot certonly --non-interactive --standalone --agree-tos --email pinguim.ribeiro@gmail.com -d home.example.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Cert is due for renewal, auto-renewing... Renewing an existing certificate Performing the following challenges: tls-sni-01 challenge for home.example.com Waiting for verification... Cleaning up challenges Generating key (2048 bits): /etc/letsencrypt/keys/0002_key-certbot.pem Creating CSR: /etc/letsencrypt/csr/0002_csr-certbot.pem IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/home.example.com/fullchain.pem. Your cert will expire on 2017-10-08. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - 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
Caso um servidor web como, por exemplo o nginx, esteja a funcionar, deve ser parado durante o pedido de emissão de certificados e reiniciado no final do processo. Neste caso o comando anterior deverá ser o seguinte:
certbot certonly --non-interactive --standalone --agree-tos --email pinguim.ribeiro@gmail.com -d home.example.com -pre-hook "service nginx stop" --post-hook "service nginx start"
O processo de criação dos certificados está concluído. No final foram gerados os seguintes ficheiros:
Ficheiro | Conteúdo |
---|---|
cert.pem | O certificado para o nosso domínio |
chain.pem | O certificado intermédio (Let's Encrypt) |
fullchain.pem | O nosso certificado (cert.pem ) e o certificado intermédio (chain.pem ) da Let’s Encrypt |
privkey.pem | A chave privada do certificado |
Renovação dos certificados
O certificado auto-assinado é válido por 90 dias. No entanto, este pode ser renovado quando estiver prestes a expirar.
Renovação manual
O processo de renovação dos certificados Let’s Encrypt é facilitado pelo certbot
, que reutiliza do parâmetros usados na criação do certificado. Os certificados são renovado apenas se estiverem prestes a expirar:
root@server:~# certbot renew Saving debug log to /var/log/letsencrypt/letsencrypt.log ------------------------------------------------------------------------------- Processing /etc/letsencrypt/renewal/home.example.com.conf ------------------------------------------------------------------------------- Cert not yet due for renewal The following certs are not due for renewal yet: /etc/letsencrypt/live/home.example.com/fullchain.pem (skipped) No renewals were attempted.
Renovação automática
Opcionalmente, pode-se criar uma tarefa agendada para proceder à renovação automática dos certificados quando estes estiverem prestes a expirar. Durante a instalação o certbot
configura essa tarefa de forma automática:
# /etc/cron.d/certbot: crontab entries for the certbot package # # Upstream recommends attempting renewal twice a day # # Eventually, this will be an opportunity to validate certificates # haven't been revoked, etc. Renewal will only occur if expiration # is within 30 days. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew