Há cinco anos e meio, Leandro Leão escreveu um ótimo artigo sobre a utilização do Let's Encrypt para habilitar o acesso com criptografia (HTTPS) dos servidores web do CEFALA. Naquela época, o Let's Encrypt era incipiente e não havia uma maneira totalmente automatizada de instalar os certificados.
Neste meio tempo, as coisas evoluíram e existe agora um programa para tanto, o certbot.
No exemplo abaixo, descrevo o processo de criação de um novo site
foo.cefala.org, que responderá em HTTPS. Suponhamos que, no servidor
www.cefala.org tenhamos um arquivo de configuração
/etc/apache2/sites-available/foo.conf
com o seguinte conteúdo:
<VirtualHost *:80>
ServerName foo.cefala.org
DocumentRoot /var/www/foo
</VirtualHost>
Suponhamos também que, no diretório root deste novo site, haja um arquivo
/var/www/foo/index.html
com o seguinte conteúdo:
<html><body>FOO</body></html>
Este site pode então ser ativado no servidor Apache:
$ sudo a2ensite foo
$ sudo systemctl reload apache2
O novo site se tornará assim acessível através da URL
http://foo.cefala.org/
.
Para que ele seja também acessível via HTTPS, basta fazer o seguinte:
$ sudo certbot --apache -d foo.cefala.org
Um novo certificado Let's Encrypt será gerado para o site foo.cefala.org e
os arquivos correspondentes serão colocados no diretório
/etc/letsencrypt/live/foo.cefala.org
.
Como a opção --apache
do comando certbot
foi usada, o arquivo
/etc/apache2/sites-available/foo.conf
é modificado automaticamente e terá
este conteúdo:
<VirtualHost *:80>
ServerName foo.cefala.org
DocumentRoot /var/www/foo
RewriteEngine on
RewriteCond %{SERVER_NAME} =foo.cefala.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Além disto, um novo arquivo /etc/apache2/sites-available/foo-le-ssl.conf
será criado, com este conteúdo:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName foo.cefala.org
DocumentRoot /var/www/foo
SSLCertificateFile /etc/letsencrypt/live/foo.cefala.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/foo.cefala.org/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
O novo site em HTTPS será automaticamente habilitado para o Apache. Basta então lançar:
$ sudo systemctl reload apache2
e o site https://foo.cefala.org/
, com criptografia SSL, estará acessível.