Pesquisa de site

Como proteger o Apache com SSL e vamos criptografar no FreeBSD


Neste tutorial aprenderemos como proteger o servidor Apache HTTP com certificados TLS/SSL oferecidos por Let's Encrypt no FreeBSD 11. x. Também abordaremos como automatizar o processo de renovação do certificado do Lets’ Encrypt.

Leia também: Instale Let’s Encrypt for Nginx no FreeBSD

Os certificados TLS/SSL são usados pelo servidor web Apache para criptografar a comunicação entre os nós finais, ou mais comum entre o servidor e o cliente, a fim de fornecer segurança. Let’s Encrypt fornece o utilitário de linha de comando certbot, que é um aplicativo que pode facilitar a maneira como você pode obter certificados confiáveis gratuitamente.

Requisitos:

  1. Instalação do FreeBSD 11.x
  2. 10 coisas a fazer após a instalação do FreeBSD
  3. Como instalar Apache, MariaDB e PHP no FreeBSD

Etapa 1: Configurar Apache SSL no FreeBSD

1. Antes de começar a instalar o utilitário certbot e criar o arquivo de configuração TSL para o Apache, primeiro crie dois diretórios distintos chamados sites-available e sites-enabled no diretório de configuração raiz do Apache emitindo os comandos abaixo.

O objetivo desses dois diretórios é facilitar o gerenciamento da configuração da hospedagem virtual no sistema, sem modificar o arquivo de configuração principal do Apache httpd.conf cada vez que adicionamos um novo host virtual.

mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled

2. Depois de criar os dois diretórios, abra o arquivo Apache httpd.conf com um editor de texto e adicione a seguinte linha perto do final do arquivo, conforme ilustrado abaixo.

nano /usr/local/etc/apache24/httpd.conf

Adicione a seguinte linha:

IncludeOptional etc/apache24/sites-enabled/*.conf

3. Em seguida, habilite o módulo TLS para Apache criando o seguinte arquivo chamado 020_mod_ssl.conf em modules.d< diretório com o seguinte conteúdo.

nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Adicione as seguintes linhas ao arquivo 020_mod_ssl.conf.

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

4. Agora, remova o comentário do módulo SSL do arquivo /usr/local/etc/apache24/httpd.conf removendo a hashtag desde o início da seguinte linha, conforme ilustrado abaixo:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Em seguida, crie o arquivo de configuração TLS do seu domínio no diretório sites-available, de preferência com o nome do seu domínio, conforme apresentado em o trecho abaixo:

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Adicione a seguinte configuração do virtualhost ao arquivo bsd.lan-ssl.conf.

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/usr/local/www/apache24/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

	BrowserMatch "MSIE [2-5]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

	CustomLog "/var/log/apache/httpd-ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

	<Directory "/usr/local/www/apache24/data/">
            Options Indexes FollowSymLinks MultiViews
        #AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        #Controls who can get stuff from this server file
                        Require all granted
        </Directory>
       
    ErrorLog "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Certifique-se de substituir a variável de nome de domínio das instruções ServerName, ServerAlias, ErrorLog, CustomLog de acordo.

Etapa 2: Instale o Lets'Encrypt no FreeBSD

6. Na próxima etapa, emita o seguinte comando para instalar o utilitário certbot fornecido por Let's Encrypt, que será usado para obter 6. Strong>Apache TSL certificados gratuitos para o seu domínio.

Durante a instalação do certbot, uma série de prompts serão exibidos na tela. Use a captura de tela abaixo para configurar o utilitário certbot. Além disso, compilar e instalar o utilitário certbot pode levar algum tempo, dependendo dos recursos da sua máquina.

cd /usr/ports/security/py-certbot
make install clean

7. Após a conclusão do processo de compilação, emita o comando abaixo para atualizar o utilitário certbot e as dependências necessárias do certbot.

pkg install py27-certbot
pkg install py27-acme

8. Para gerar um certificado para o seu domínio, emita o comando conforme ilustrado abaixo. Certifique-se de fornecer o local webroot correto onde os arquivos do seu site estão armazenados no sistema de arquivos (diretiva DocumentRoot do arquivo de configuração do seu domínio) usando o sinalizador -w. Se você tiver vários subdomínios, adicione todos eles com o sinalizador -d.

certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com

Ao obter o certificado, forneça um endereço de e-mail para renovação do certificado, pressione a para concordar com os termos e condições do Let’s Encrypt e n para não compartilhar o endereço de e-mail dos parceiros do Let’s Encrypt.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email 
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/apache24/data for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/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

9. Depois de obter os certificados para o seu domínio, você pode executar o comando ls para listar todos os componentes do certificado (cadeia, chave privada, certificado) conforme apresentado no exemplo abaixo.

ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/

Etapa 3: Atualizar certificados Apache TLS no FreeBSD

10. Para adicionar certificados Let’s Encrypt ao seu site, abra o arquivo de configuração do Apache para o seu domínio e atualize as linhas a seguir para refletir o caminho dos certificados emitidos.

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Adicione estas linhas de certificado TLS:

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

11. Por fim, ative o arquivo de configuração TLS, criando um link simbólico para o arquivo de configuração TLS do seu domínio para o diretório sites-enabled, verifique as configurações do Apache para possíveis erros de sintaxe e, se a sintaxe está OK, reinicie o daemon Apache emitindo os comandos abaixo.

ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart

12. Para verificar se o serviço Apache está escutando na porta HTTPS 443, emita o seguinte comando para listar os soquetes de rede httpd.

sockstat -4 | grep httpd

13. Você pode navegar até o endereço do seu domínio a partir de um navegador via protocolo HTTPS para confirmar se os certificados Let’s Encrypt foram aplicados com sucesso.

https://www.yourdomain.com

14. Para obter informações adicionais sobre o certificado Let’s Encrypt emitido na linha de comando, use o comando openssl da seguinte forma.

openssl s_client -connect www.yourdomain.com:443

15. Você também pode verificar se o tráfego está criptografado com um certificado válido fornecido pela Let’s Encrypt CA a partir de um dispositivo móvel, conforme ilustrado na captura de tela móvel abaixo.

Isso é tudo! Os clientes agora podem visitar seu site com segurança, pois o tráfego que flui entre o servidor e o navegador do cliente é criptografado. Para tarefas mais complexas relacionadas ao utilitário certbot, visite o seguinte link: https://certbot.eff.org/