A Let’s Encrypt é uma autoridade certificadora (CA) que fornece uma maneira descomplicada de obter e instalar certificados TLS/SSL gratuitos, habilitando assim protocolos HTTPS criptografados em servidores web. Ela simplifica o processo ao fornecer um cliente de software, o Certbot, que tenta automatizar a maioria (se não todas) das etapas necessárias. Atualmente, todo o processo de obtenção e instalação de um certificado é totalmente automatizado em Apache e Nginx.
Neste tutorial, você usará o Certbot para obter um certificado SSL gratuito para o Apache no Debian 10 e para configurar o seu certificado para renovação automática.
Este tutorial usará um arquivo de virtual host do Apache separado em vez do arquivo de configuração padrão. Recomendamos que você crie novos arquivos de virtual host do Apache para cada domínio, uma vez que isso ajuda a evitar erros comuns e mantém os arquivos padrão como uma configuração de backup.
Para seguir este tutorial, será necessário:
Um servidor Debian 10 configurado seguindo este tutorial de configuração inicial do servidor para o Debian 10, incluindo um usuário sudo não-root e um firewall.
Um nome de domínio totalmente qualificado. Este tutorial usará seu_domínio como um exemplo por todo o artigo. Você pode comprar um nome de domínio em Namecheap, obter um gratuitamente em Freenom ou usar o registrador de domínios de sua escolha.
Ambos os registros de DNS a seguir configurados para o seu servidor. Para configurá-los você pode seguir estas instruções para adição de domínios e em seguida estas instruções para a criação de registros DNS.
seu_domínio
apontando para o endereço IP público do seu servidor.www.seu_domínio
apontando para o endereço IP público do seu servidor.O Apache instalado seguindo o tutorial How To Install Apache on Debian 10. Certifique-se de que você tem um arquivo de virtual host configurado para o seu domínio. Este tutorial usará o /etc/apache2/sites-available/seu_domínio.conf
como um exemplo.
A primeira etapa para usar o Let’s Encrypt para obter um certificado SSL, é instalar o software Certbot no seu servidor.
No momento da escrita deste artigo, o Certbot não está disponível nos repositórios de software do Debian por padrão. Para baixar o software usando o apt
, você precisará adicionar o repositório de backports ao seu arquivo sources.list
onde o apt
procura as origens dos pacotes. Backports são pacotes dos testes e distribuições instáveis do Debian que são recompilados para que funcionem sem novas bibliotecas em distribuições estáveis do Debian.
Para adicionar o repositório de backports, abra (ou crie) o arquivo sources.list
no seu diretório /etc/apt/
:
- sudo nano /etc/apt/sources.list
Na parte inferior do arquivo, adicione a seguinte linha:
. . .
deb http://mirrors.digitalocean.com/debian buster-backports main
deb-src http://mirrors.digitalocean.com/debian buster-backports main
deb http://ftp.debian.org/debian buster-backports main
Isso inclui os pacotes main
, que estão em conformidade com Debian Free Software Guidelines (DFSG), bem como os componentes não-livres
e contrib
, que não estão eles próprios em conformidade com DFSG, ou incluem dependências nessa categoria.
Salve e feche o arquivo pressionando CTRL+X
, Y
, depois ENTER
e atualize suas listas de pacotes:
- sudo apt update
Em seguida, instale o Certbot com o seguinte comando. Observe que a opção -t
diz ao apt
para procurar o pacote verificando no repositório de backports que você acabou de adicionar:
- sudo apt install python-certbot-apache -t buster-backports
Agora o Certbot está pronto para uso, mas para configurar o SSL para o Apache, precisamos verificar se o Apache foi configurado corretamente.
O Certbot precisa encontrar o virtual host correto na sua configuração do Apache para configurar automaticamente o SSL. Especificamente, ele faz isso procurando uma diretiva ServerName
que corresponda ao domínio para o qual você solicita um certificado.
Se você seguiu a etapa de configuração do virtual host no tutorial de instalação do Apache, você deve ter um bloco VirtualHost
para seu domínio em /etc/apache2/sites-available/seu_domínio.conf
com a diretiva ServerName
já configurada apropriadamente.
Para verificar, abra o arquivo do virtual host do seu domínio usando nano
ou seu editor de texto favorito:
- sudo nano /etc/apache2/sites-available/seu_domínio.conf
Encontre a linha ServerName
existente. Ele deve ficar assim, com seu próprio nome de domínio em vez de your_domain
:
...
ServerName seu_domínio;
...
Se ainda não o fez, atualize a diretiva ServerName
para apontar para o seu nome de domínio. Em seguida, salve o arquivo, feche seu editor e verifique a sintaxe das suas edições de configuração:
- sudo apache2ctl configtest
Se não houver nenhum erro de sintaxe, você verá isso em sua saída:
OutputSyntax OK
Se você receber um erro, reabra o arquivo de virtual host e verifique se há erros de digitação ou caracteres ausentes. Quando a sintaxe do seu arquivo de configuração estiver correta, recarregue o Apache para carregar a nova configuração:
- sudo systemctl reload apache2
O Certbot agora pode encontrar o bloco VirtualHost
correto e atualizá-lo.
Em seguida, vamos atualizar o firewall para permitir o tráfego HTTPS.
Se você tiver o firewall ufw
ativado, conforme recomendado pelos guias de pré-requisito, precisará ajustar as configurações para permitir o tráfego HTTPS. Felizmente, quando instalado no Debian, o ufw
vem com alguns perfis que ajudam a simplificar o processo de alteração das regras de firewall para o tráfego HTTP e HTTPS.
Você pode ver a configuração atual digitando:
- sudo ufw status
Se você seguiu o Passo 2 do nosso guia How to Install Apache on Debian 10, a saída deste comando será parecida com esta, mostrando que apenas o tráfego HTTP é permitido para o servidor web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
Para permitir adicionalmente o tráfego HTTPS, permita o perfil “WWW Full” e exclua a permissão redundante de perfil “WWW”:
- sudo ufw allow 'WWW Full'
- sudo ufw delete allow 'WWW'
Seu status agora deve ficar assim:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW Full (v6) ALLOW Anywhere (v6)
Em seguida, vamos executar o Certbot e buscar nossos certificados.
O Certbot fornece várias maneiras de obter certificados SSL através de plugins. O plugin do Apache cuidará da reconfiguração do Apache e da recarga da configuração sempre que necessário. Para usar este plugin, digite o seguinte:
- sudo certbot --apache -d seu_domínio -d www.seu_domínio
Isso executa o certbot
com o plug-in --apache
, usando -d
para especificar os nomes para os quais você deseja que o certificado seja válido.
Se esta é sua primeira vez executando o certbot
, você será solicitado a inserir um endereço de e-mail e concordar com os termos do serviço. Além disso, ele perguntará se você deseja compartilhar seu endereço de e-mail com a Electronic Frontier Foundation, uma organização sem fins lucrativos que defende os direitos digitais e também é a criadora do Certbot. Sinta-se à vontade para digitar Y
para compartilhar seu endereço de e-mail ou N
para recusar.
Depois disso, o certbot
irá se comunicar com o servidor Let’s Encrypt, e então executará um desafio para verificar se você controla o domínio para o qual está solicitando um certificado.
Se for bem-sucedido, o certbot
perguntará como você deseja definir suas configurações de HTTPS:
OutputPlease 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):
Selecione sua escolha e pressione ENTER
. A configuração será atualizada automaticamente e o Apache será recarregado para pegar as novas configurações. O certbot
será encerrado com uma mensagem informando que o processo foi bem-sucedido e onde seus certificados estão armazenados:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/seu_domínio/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/seu_domínio/privkey.pem
Your cert will expire on 2019-10-20. 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
Seus certificados foram baixados, instalados e carregados. Tente recarregar seu site usando https://
e observe o indicador de segurança do seu navegador. Deve indicar que o site está protegido corretamente, geralmente com um ícone de cadeado verde. Se você testar seu servidor usando o SSL Labs Server Test, ele receberá uma nota A.
Vamos terminar testando o processo de renovação.
Os certificados Let’s Encrypt são válidos apenas por noventa dias. Isso é para incentivar os usuários a automatizar seu processo de renovação de certificado. O pacote certbot
que instalamos cuida disso adicionando um script de renovação ao /etc/cron.d
. Esse script é executado duas vezes por dia e renova automaticamente qualquer certificado que esteja dentro de trinta dias para a expiração.
Para testar o processo de renovação, você pode fazer uma execução de teste com certbot
:
- sudo certbot renew --dry-run
Se você não encontrar erros, está tudo pronto. Quando necessário, o Certbot renovará seus certificados e recarregará o Apache para tornar efetivas as alterações. Se o processo de renovação automatizada falhar, o Let’s Encrypt enviará uma mensagem para o email que você especificou, avisando quando o seu certificado estiver prestes a expirar.
Neste tutorial, você instalou o cliente certbot
do Let’s Encrypt, baixou certificados SSL para o seu domínio, configurou o Apache para usar esses certificados e configurou a renovação automática de certificados. Se você tiver mais dúvidas sobre o uso do Certbot, a documentação dele é um bom ponto de partida.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!