Certbot is our friend

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.

social