A Let’s Encrypt é uma autoridade certificadora (CA) que proporciona uma maneira descomplicada de obter e instalar certificados TLS/SSL, gratuitamente, possibilitando 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 Ubuntu 18.04 e para configurar o seu certificado para renovação automática.
Este tutorial usará um arquivo de host virtual Apache separado em vez do arquivo de configuração padrão. Recomendamos que você crie novos arquivos de host virtual Apache para cada domínio, uma vez que isso ajuda a evitar erros comuns e mantém as linhas padrão como uma configuração de fallback.
Para seguir este tutorial, será necessário:
Um servidor Ubuntu 18.04 configurado seguindo este tutorial de configuração inicial do servidor para o Ubuntu 18.04, incluindo um usuário sudo não raiz e um firewall.
Um nome de domínio totalmente registrado. Este tutorial usará o your_domain como um exemplo. Você pode comprar um nome de domínio em Namecheap, obter um gratuitamente em Freenom ou usar o registrado de domínios de sua escolha.
Ambos os registros de DNS a seguir serão configurados para o seu servidor. Você pode seguir esta introdução para DNS DigitalOcean para mais detalhes sobre como adicioná-los.
your_domain <^>
apontando para o endereço IP público do seu servidor.www.your_domain
apontando para o endereço IP público do seu servidor.O Apache instalado seguindo Como instalar o Apache no Ubuntu 18.04. Certifique-se de que tem um virtual host file para seu domínio. Este tutorial usará o /etc/apache2/sites-available/your_domain.conf
como exemplo.
A primeira etapa para usar o Let’s Encrypt para obter um certificado SSL, é instalar o software Certbot no seu servidor.
O Certbot está franco desenvolvimento, de modo que os pacotes Certbot fornecidos pelo Ubuntu tendem a estar desatualizados. No entanto, os desenvolvedores do Certbot mantêm um repositório de software do Ubuntu com versões atualizadas, então iremos utilizar aquele repositório.
Primeiramente, adicione o repositório:
- sudo add-apt-repository ppa:certbot/certbot
Aperte ENTER
para aceitar.
Instale o pacote Apache do Certbot com o apt
:
- sudo apt install python-certbot-apache
O Certbot agora está pronto para ser usado. Para que ele configure o SSL para o Apache, porém, precisamos verificar algumas configurações do Apache.
O Certbot precisa encontrar o host virtual correto na sua configuração Apache para que ele configure automaticamente o SSL. Mais especificamente, ele faz isso procurando uma diretiva de ServerName
que corresponda ao domínio ao qual você solicita um certificado.
Se você seguiu a etapa de configuração de host virtual no tutorial de instalação do Apache, você deve ter um bloco de VirtualHost para seu domínio em /etc/apache2/sites-available/your_domain.com.conf
com a diretriz ServerName
já configurada corretamente.
Para verificar, abra o arquivo de host virtual do seu domínio usando o nano
ou seu editor de texto preferido:
- sudo nano /etc/apache2/sites-available/your_domain.conf
Encontre a linha existente do ServerName
. Ela deve se parecer com esta:
...
ServerName your_domain;
...
Se parecer, saia do seu editor e siga para o próxima etapa.
Se não, atualize-a para corresponder. Em seguida, salve o arquivo, feche o editor e verifique a sintaxe de suas edições de configuração:
- sudo apache2ctl configtest
Se aparecer um erro, abra novamente o arquivo de host virtual e verifique se há erros de digitação ou se faltam caracteres. Depois que a sintaxe do seu arquivo de configuração estiver correta, recarregue o Apache para aplicar a nova configuração:
- sudo systemctl reload apache2
O Certbot agora consegue encontrar o bloco do VirtualHost correto e atualizá-lo.
Em seguida, atualizaremos o firewall para permitir o tráfego HTTPS.
Se você tem o firewall ufw
ativado, conforme recomendado pelos guias de pré-requisitos, será necessário ajustar as configurações para permitir o tráfego HTTPS. Felizmente, o Apache registra alguns perfis com o ufw
na instalação.
Você pode verificar a configuração atual digitando:
- sudo ufw status
Provavelmente irá se parecer com isso, o que significa que apenas o tráfego HTTP é permitido no servidor Web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Para permitir também o tráfego HTTPS, autorize o perfil Apache Full e apague a autorização de perfil Apache redundante:
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 'Apache'
Seu status agora deve se parecer com este:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Em seguida, vamos executar o Certbot e buscar os nossos certificados.
O Certbot oferecer várias maneiras de obter certificados SSL através de plug-ins. O plug-in Apache cuidará da reconfiguração do Apache e recarregará a configuração sempre que necessário. Para usar este plug-in, digite o seguinte:
- sudo certbot --apache -d your_domain -d www.your_domain
Isso executa o certbot
com o plug-in --apache
, usando -d
para especificar os nomes para os quais deseja um certificado válido.
Se essa é a primeira vez que você executa o certbot
, você será solicitado a informar um endereço de e-mail e concordar com os termos de serviço. Após fazer isso, o certbot
se comunicará com o servidor da Let’s Encrypt, executando posteriormente um desafio para verificar se você controla o domínio para o qual está solicitando um certificado.
Se tudo correr bem, o certbot
perguntará como você quer 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):
Select your choice then hit ENTER
. A configuração será atualizada e o Apache recarregará para aplicar as novas configurações. O certbot
será encerrado com uma mensagem informando que o processo foi concluído com sucesso e onde os certificados foram armazenados:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2018-07-23. 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 são baixados, instalados e carregados. Tente recarregar o site usando https://
e verifique o indicador de segurança do seu navegador. Ele deve indicar que o site está devidamente protegido, normalmente com um ícone de cadeado verde. Se você testar o servidor usando o SSL Labs Server Test, receberá uma classificação A.
Vamos concluir testando o processo de renovação.
Os certificados da Let’s Encrypt possuem validade de apenas 90 dias. Isso visa incentivar os usuários a automatizar o processo de renovação de certificados. O pacote do certbot
que instalamos cuida disso ao adicionar um script de renovação em /etc/cron.d
. Esse script é executado duas vezes por dia e renova automaticamente qualquer certificado que expire dentro de trinta dias.
Para testar o processo de renovação, você pode realizar uma simulação com o certbot
:
- sudo certbot renew --dry-run
Se não aparecerem erros, tudo funcionou. Quando necessário, o Certbot renovará seus certificados e recarregará o Apache para aplicar as alterações. Se o processo de renovação automatizada alguma vez falhar, a Let’s Encrypt enviará uma mensagem para o e-mail que você especificou, informando quando o certificado vai expirar.
Neste tutorial, você instalou o certbot
do cliente Let’s Encrypt, baixou os certificados SSL para o seu domínio, configurou o Apache para usar esses certificados e configurou a renovação automática de certificados. Em caso de outras dúvidas sobre como usar o Certbot, a documentação da ferramenta é 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!
Hi, the plugin installation only works with: sudo apt install python3-certbot-apache