
SSL no Apache
1. Domínios .local só funcionam localmente
- Eles não são válidos para acesso externo na internet.
- Apenas computadores que tenham o arquivo /etc/hosts configurado vão reconhecer esses domínios.
- Servidores de certificação pública como Let’s Encrypt não conseguem validar nem emitir certificados SSL para domínios .local.
2. Como usar HTTPS em .local
Certificados públicos (Let’s Encrypt)
- Não funciona para .local. O Let’s Encrypt exige que o domínio esteja acessível publicamente e registrado na internet.
Certificados autoassinados (self-signed)
- Para desenvolvimento, pode-se gerar um certificado autoassinado.
- O navegador mostrará aviso de segurança (“conexão insegura”) — isso é esperado, pois o certificado não é “confiável” para o navegador.
- Para remover o aviso, o certificado autoassinado precisa ser importado manualmente como confiável no computador cliente (opcional).
3. Como Gerar e Configurar um Certificado Autoassinado para .local
3.1. Gere um certificado autoassinado para cada domínio
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/site1.local.key \
-out /etc/ssl/certs/site1.local.crt \
-subj "/CN=site1.local"
Repita para site2.local mudando os nomes:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/site2.local.key \
-out /etc/ssl/certs/site2.local.crt \
-subj "/CN=site2.local
3.2. Configure o VirtualHost SSL
No /etc/apache2/sites-available/site1.local.conf, inclua (ou ajuste) o virtual host na porta 443:
ServerName site1.local
DocumentRoot /var/www/site1.local/public_html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/site1.local.crt
SSLCertificateKeyFile /etc/ssl/private/site1.local.key
AllowOverride All
Repita para site2.local.
ServerName site2.local
DocumentRoot /var/www/site2.local/public_html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/site2.local.crt
SSLCertificateKeyFile /etc/ssl/private/site2.local.key
AllowOverride All
3.3. Redirecione HTTP → HTTPS
No /etc/apache2/sites-available/site1.local.conf, alterar na porta 80:
ServerName site1.local
Redirect permanent / https://site1.local/
No /etc/apache2/sites-available/site2.local.conf, alterar na porta 80:
ServerName site2.local
Redirect permanent / https://site2.local/
3.4. Permissões dos arquivos
sudo chmod 600 /etc/ssl/private/site1.local.key
sudo chmod 600 /etc/ssl/private/site2.local.key
sudo chmod 644 /etc/ssl/certs/site1.local.crt
sudo chmod 644 /etc/ssl/certs/site2.local.crt
3.5. Ative o módulo SSL e os sites
sudo a2enmod ssl
sudo a2ensite site1.local.conf
sudo a2ensite site2.local.conf
sudo systemctl reload apache2
4. Configure seu /etc/hosts
Se ainda não fez isso, em cada máquina que precisa acessar os sites locais, adicione:
127.0.0.1 site1.local
127.0.0.1 site2.local
Para acesso HTTPS sem aviso de segurança, só é possível usando um domínio real (registrado publicamente) e Let’s Encrypt.