Configurando o Apache com o certificado SSL livre da Let’s Encrypt
Prezados Colegas,
Primeiramente, saudações “pinguianas” a todos.
Devido a um problema que tive com o meu fornecedor de certificados SSL (StartSSL.com), eu resolvi enviar e-mails para algumas comunidades de Linux que participo, pedindo indicações para um novo fornecedor, que pudesse emitir Certificados Wildcard Multidomínios.
Então me indicaram o certificado livre Let’s Encrypt.
Fiz uma rápida pesquisa e cheguei a conclusão que NESSE CASO EM ESPECÍFICO ele não atenderia as necessidades de um de meus clientes, pois ele não é Wildcard, ou seja, não funciona no modo “curinga” (*.dominio.com.br).
Mesmo assim, por se tratar de uma solução livre, bateu aquela curiosidade e eu resolvi testar o certificado. E eu gostei tanto que resolvi escrever um artigo do tipo “receita de bolo”, para se instalar um servidor web com Apache e SSL (usando o certificado livre da Let’s Encrypt).
Não irei abordar aqui os complementos do Apache (php, etc), pois o objetivo é mostrar a implementação do certificado.
Para essa experiência, eu usei um domínio que possuo chamado “delaarte.com.br” que não estava em uso (e nem irei renovar) com os DNS configurados assim:
delaarte.com.br apontando para 189.43.148.72 (webserver)
www.delaarte.com.br apontando para 189.43.148.72 (webserver)
Agora chega de “blá blá blá” e vamos colocar a mão na massa:
O primeiro passo é instalar o Apache e o Gid. Faça com o comando abaixo:
apt-get install -y apache2 git
No segundo passo, iremos subir o módulo SSL e reiniciar o Apache:
a2enmod ssl && service apache2 restart
No terceiro passo, vamos instalar usar o Gid para instalar o Let’s Encrypt:
git -C /usr/src/ clone https://github.com/letsencrypt/letsencrypt ln -s /usr/src/letsencrypt/letsencrypt-auto /usr/local/bin/letsencrypt
No quarto passo vamos criar a raiz do site (diretório onde ficarão os arquivos) e dar as devidas permissões:
mkdir -p /var/www/delaarte.com.br chown -R www-data:www-data /var/www/delaarte.com.br
No quinto passo, vamos criar o arquivo de configuração para o site:
touch /etc/apache2/sites-available/delaarte.com.br.conf
Edite-o utilizado o seu editor favorito (o meu é o Vim) e deixe-o assim:
<VirtualHost *:80> ServerName www.delaarte.com.br ServerAlias delaarte.com.br ServerAdmin [email protected] DocumentRoot /var/www/delaarte.com.br </VirtualHost>
No sexto passo vamos habilitar o arquivo de configuração e reiniciar o apache:
ln -s /etc/apache2/sites-available/delaarte.com.br.conf /etc/apache2/sites-enabled/ service apache2 restart
No sétimo passo, vamos finalmente criar o certificado:
letsencrypt certonly -d delaarte.com.br -d www.delaarte.com.br -w /var/www/delaarte.com.br
Apenas na geração do primeiro certificado, ele irá instalar todos os pacotes necessários.
Para criar o certificado, script lhe fará algumas perguntas.
Primeiro ele vai perguntar como você gostaria de se autenticar na certificadora. Então você deve selecionar a opção “2“, indicando para ele usar a raiz do site para trocar arquivos de autenticação.
Depois ele vai pedir um endereço de e-mail. A ele será enviado os avisos de renovação e questões relacionadas a segurança.
Depois ele vai peguntar se você aceita os termos e condições de uso. Você deve fazê-lo digitando a “A” e pressionando enter.
Na ultima pergunta o script vai te perguntar se você gostaria de compartilhar seu endereço de e-mail com a Electronic Frontier Foundation, que são sócios fundadores da Let’s Encrypt, para que os mesmos possam lhe enviar informativos. Eu geralmente respondo que não, utilizando a opção “N“.
A saída deve ser algo mais ou menos assim:
Agora que temos os certificados, vamos configurá-los no Apache, então, como oitavo passo, edite novamente o arquivo “/etc/apache2/sites-available/delaarte.com.br.conf” e deixe-o assim:
<VirtualHost *:80> ServerName www.delaarte.com.br ServerAlias delaarte.com.br Redirect permanent / https://www.delaarte.com.br/ ErrorLog ${APACHE_LOG_DIR}/delaarte.com.br/www-error.log CustomLog ${APACHE_LOG_DIR}/delaarte.com.br/www-access.log combined </VirtualHost> <VirtualHost _default_:443> ServerName delaarte.com.br Redirect permanent / https://www.delaarte.com.br/ SSLProxyEngine on SSLEngine on SSLCertificateFile /etc/letsencrypt/live/delaarte.com.br/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/delaarte.com.br/privkey.pem SSLCaCertificateFile /etc/letsencrypt/live/delaarte.com.br/fullchain.pem </VirtualHost> <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin [email protected] ServerName www.delaarte.com.br DocumentRoot /var/www/delaarte.com.br/www SSLEngine on SSLCertificateFile /etc/letsencrypt/live/delaarte.com.br/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/delaarte.com.br/privkey.pem SSLCaCertificateFile /etc/letsencrypt/live/delaarte.com.br/fullchain.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> </FilesMatch> <Directory /usr/lib/cgi-bin> </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule>
Após salvar e sair do arquivo, reinicie novamente o Apache:
service apache2 restart
Agora o servidor já está com SSL configurado. Acesse o site e verá que o cadeado verde e o https já estão lá. Veja:
O décimo e ultimo passo, é colocar o comando de renovação no Crontab, pois a validade do certificado é de apenas 3 meses. Feito isso, ele sempre será renovado automaticamente, sem nenhuma intervenção.
Edite o arquivo “/etc/crontab” e insira a seguinte linha ao final do arquivo:
00 0 1 1,3,5,7,9,11 * root letsencrypt renew
Agora reinicie o Crontab:
service cron restart
Isso vai fazer com que o comando de renovação rode automaticamente no dia primeiro dos meses janeiro, março, maio, julho, setembro e novembro.
Isso é tudo!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes