A utilização de HTTPS deixou de ser um diferencial e passou a ser um requisito básico para qualquer aplicação web. Além de proteger a comunicação entre usuários e servidor, o protocolo HTTPS melhora a confiabilidade do site e evita alertas de segurança nos navegadores.
Neste artigo, vamos mostrar como configurar certificados SSL gratuitos do Let’s Encrypt em servidores Windows utilizando XAMPP/Apache e a ferramenta Win-ACME, incluindo a renovação automática dos certificados.
Pré-requisitos
Antes de iniciar, verifique se:
- O domínio já está apontando para o IP público do servidor.
- A porta 80 (HTTP) está liberada no firewall.
- O Apache está funcionando corretamente.
- Você possui acesso administrativo ao Windows Server.
- O XAMPP está instalado e operacional.
Download do Win-ACME
O Win-ACME é um cliente ACME para Windows que permite emitir e renovar certificados Let’s Encrypt de forma automatizada.
Download oficial:
Após o download, extraia os arquivos para uma pasta permanente do servidor, como:
C:\win-acme
Evite executar o programa diretamente da pasta Downloads, pois a renovação automática depende que os arquivos permaneçam no mesmo local.
Criando a pasta para armazenar os certificados
Crie uma pasta onde serão gravados os arquivos PEM utilizados pelo Apache:
C:\apache-certs
Gerando o certificado
Abra o Prompt de Comando como Administrador.
Acesse a pasta onde o Win-ACME foi instalado:
cd "C:\win-acme"
Execute o comando abaixo substituindo os valores pelo seu domínio:
wacs.exe --source manual --host www.example.com --validation filesystem --webroot "C:\htdocs\www\example.com" --store pemfiles --pemfilespath C:\apache-certs
Entendendo os parâmetros
--source manual: informa manualmente o domínio.--host: domínio que receberá o certificado.--validation filesystem: validação através de arquivo temporário.--webroot: pasta pública do site.--store pemfiles: gera arquivos compatíveis com Apache.--pemfilespath: diretório onde os certificados serão gravados.
Ao final do processo serão criados arquivos semelhantes a:
www.example.com-chain.pem
www.example.com-key.pem
Habilitando SSL no Apache
Primeiramente, verifique se o módulo SSL está habilitado no Apache.
No arquivo httpd.conf, confirme a existência das linhas:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Configurando o redirecionamento HTTP para HTTPS
No VirtualHost da porta 80 adicione:
RewriteEngine On
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Dessa forma todas as requisições HTTP serão automaticamente redirecionadas para HTTPS.
Criando o VirtualHost SSL
Adicione a configuração SSL:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName www.example.com
DocumentRoot "C:\htdocs\www\example.com"
SSLEngine on
SSLCertificateFile "C:/apache-certs/www.example.com-chain.pem"
SSLCertificateKeyFile "C:/apache-certs/www.example.com-key.pem"
</VirtualHost>
Em instalações XAMPP essa configuração geralmente fica em:
C:\xampp\apache\conf\extra\httpd-vhosts.conf
ou
C:\xampp\apache\conf\extra\httpd-ssl.conf
Após salvar as alterações, reinicie o Apache.
Liberando a porta 443 no Firewall do Windows
Para que o HTTPS funcione externamente, é necessário liberar a porta 443.
Abra um Prompt como Administrador:
netsh advfirewall firewall add rule name="HTTPS Apache" dir=in action=allow protocol=TCP localport=443
Também é recomendável garantir que a porta 80 permaneça liberada para validações futuras do Let’s Encrypt.
netsh advfirewall firewall add rule name="HTTP Apache" dir=in action=allow protocol=TCP localport=80
Configurando NAT, Proxy ou Port Forward
Caso o servidor esteja atrás de firewall corporativo, roteador ou balanceador de carga, será necessário encaminhar a porta HTTPS.
Configure:
| Porta Externa | Porta Interna |
|---|---|
| TCP 443 | TCP 443 |
| TCP 80 | TCP 80 |
Se houver um proxy reverso, certifique-se de que ele encaminhe corretamente as conexões HTTPS para o servidor Apache.
Sem esse encaminhamento o certificado pode ser emitido, mas os usuários externos não conseguirão acessar o site via HTTPS.
Renovação Automática dos Certificados
Os certificados Let’s Encrypt possuem validade limitada e precisam ser renovados periodicamente.
Uma das principais vantagens do Win-ACME é que ele cria automaticamente uma tarefa agendada no Windows para verificar e renovar certificados quando necessário.
Para verificar:
- Abra o Agendador de Tarefas (
taskschd.msc); - Localize a tarefa relacionada ao Win-ACME;
- Confirme que ela está habilitada.
A tarefa normalmente executa:
wacs.exe --renew
Para testar manualmente:
wacs.exe --renew --force
Reiniciando o Apache após a renovação
Quando o certificado for renovado, o Apache precisa recarregar os novos arquivos.
Uma abordagem simples é criar um arquivo:
@echo off
net stop Apache2.4
net start Apache2.4
E configurá-lo como ação pós-renovação no Win-ACME.
Dessa forma, sempre que o certificado for renovado, o Apache passará a utilizar automaticamente os novos arquivos.
Testando a configuração
Após concluir as etapas:
- Reinicie o Apache.
- Acesse:
https://www.example.com
- Verifique se o cadeado de segurança aparece no navegador.
- Utilize ferramentas online de validação SSL para confirmar a instalação.
Conclusão
A combinação de XAMPP, Apache, Let’s Encrypt e Win-ACME oferece uma solução gratuita e eficiente para proteger aplicações web hospedadas em Windows Server. Com a renovação automática configurada corretamente, o processo de gerenciamento de certificados praticamente deixa de exigir intervenção manual, reduzindo riscos de indisponibilidade por certificados expirados.
Além da configuração do Apache, lembre-se de validar a abertura das portas 80 e 443 no firewall e garantir o encaminhamento correto dessas portas em roteadores, firewalls ou proxies reversos. Esses detalhes costumam ser responsáveis pela maioria dos problemas durante a emissão e renovação dos certificados.