Como configurar SSL/HTTPS no site do servidor de MU Online
Aprenda a instalar e configurar HTTPS no site do seu servidor de MU Online com Let's Encrypt, IIS e Apache, incluindo redirecionamento forçado, renovação automática e correção dos erros mais comuns.
Rodar o site do seu servidor de MU Online em HTTP puro, sem cadeado, é um problema em várias frentes ao mesmo tempo. Primeiro, credibilidade: o navegador exibe "Não seguro" ao lado do endereço, e jogador nenhum confia em digitar senha nesse contexto. Segundo, segurança real: sem HTTPS, login, cadast
Rodar o site do seu servidor de MU Online em HTTP puro, sem cadeado, é um problema em várias frentes ao mesmo tempo. Primeiro, credibilidade: o navegador exibe "Não seguro" ao lado do endereço, e jogador nenhum confia em digitar senha nesse contexto. Segundo, segurança real: sem HTTPS, login, cadastro e dados do painel trafegam em texto puro, e qualquer pessoa na mesma rede (Wi-Fi de lan house, provedor, roteador comprometido) consegue capturar as credenciais. Terceiro, funcionalidade: recursos modernos de site, integrações de pagamento e até o ranqueamento em buscadores dependem de HTTPS.
Este guia é de nível intermediário e cobre os dois ambientes mais usados em servidores de MU: IIS no Windows Server (padrão de quem usa webEngineNET e distros que rodam sobre Windows) e Apache (XAMPP no Windows ou LAMP no Linux). Você vai instalar um certificado gratuito e válido, forçar HTTPS, automatizar a renovação e resolver os erros clássicos que aparecem logo após ativar. Se ainda está montando a base do servidor, veja antes como criar um servidor de MU Online.
Pré-requisitos
Antes de começar, confirme que você tem tudo isto pronto:
- Um domínio próprio (ex.:
meuservidor.com) — não dá para ter certificado público válido só com IP. - DNS apontado: um registro
Ado domínio (e dowww) apontando para o IP do servidor, já propagado. - Acesso administrativo ao servidor (RDP no Windows Server ou SSH no Linux).
- Site funcionando em HTTP (porta 80) antes de mexer em SSL.
- Portas 80 e 443 liberadas no firewall do sistema operacional e no painel do provedor/VPS.
- Um horário de baixo movimento para fazer a troca, já que o site pode oscilar por alguns minutos.
> Aviso: a porta 80 precisa estar aberta durante a emissão do certificado. O Let's Encrypt valida o domínio acessando um arquivo temporário via HTTP. Se a 80 estiver fechada, a emissão falha.
Entendendo o básico: certificado, CA e portas
Antes de instalar, vale fixar três conceitos que evitam a maioria dos erros:
| Conceito | O que é | Por que importa |
|---|---|---|
| Certificado SSL/TLS | Arquivo que prova a identidade do domínio e habilita a criptografia | Sem ele, o navegador não estabelece conexão segura |
| CA (Autoridade Certificadora) | Entidade que emite e assina o certificado (ex.: Let's Encrypt) | Certificado autoassinado não é confiável e gera alerta |
| Porta 443 | Porta padrão do HTTPS | O binding do site precisa escutar nela |
A diferença prática entre um certificado Let's Encrypt (gratuito, válido, aceito por todos os navegadores) e um autoassinado (que você mesmo gera) é enorme: o autoassinado criptografa, mas o navegador mostra tela vermelha de "conexão não privada". Para um servidor público, use sempre uma CA reconhecida. O autoassinado só serve para ambiente interno de testes.
Opção A — HTTPS no IIS (Windows Server) com win-acme
O win-acme (wacs.exe) é a ferramenta padrão para Let's Encrypt no IIS. Ele emite, instala e configura o binding automaticamente.
Passo 1 — Preparar o ambiente
- Acesse o servidor via RDP como administrador.
- Confirme que o site já responde em
http://meuservidor.com. - Abra o PowerShell como administrador e crie a pasta de trabalho:
New-Item -ItemType Directory -Force C:\ssl-tools | Out-Null
Set-Location C:\ssl-tools
Passo 2 — Liberar as portas no firewall
New-NetFirewallRule -DisplayName "HTTP-80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS-443" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Passo 3 — Baixar e rodar o win-acme
- Baixe o
win-acme(versão x64) do repositório oficial emhttps://github.com/win-acme/win-acme/releases. - Extraia em
C:\ssl-tools\wacs\. - Execute o
wacs.execomo administrador. - No menu, escolha a opção de criar um certificado novo simples (normalmente a tecla
N). - O win-acme lista os sites do IIS. Selecione o site do seu MU.
- Escolha os hostnames (
meuservidor.comewww.meuservidor.com). - Aceite os termos do Let's Encrypt e informe um e-mail para avisos de expiração.
O win-acme valida o domínio, emite o certificado, cria o binding HTTPS na porta 443 no IIS e já configura uma tarefa agendada de renovação. Ao final, https://meuservidor.com deve abrir com cadeado.
Passo 4 — Conferir o binding no IIS
Abra o IIS Manager → Sites → seu site → Bindings. Deve existir uma entrada https na porta 443 com o certificado do domínio. Se não existir, adicione manualmente: Add → Type: https → Port: 443 → SSL certificate: o do seu domínio.
Passo 5 — Forçar HTTPS via web.config
Adicione (ou edite) o web.config na raiz do site para redirecionar todo HTTP para HTTPS. Requer o módulo URL Rewrite instalado no IIS.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Forcar HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Opção B — HTTPS no Apache (XAMPP / Linux)
Se você usa Apache, o caminho depende do sistema. No Linux o certbot faz quase tudo sozinho; no XAMPP (Windows) a configuração é mais manual.
Passo 1 (Linux) — Emitir com certbot
# Debian/Ubuntu com Apache
sudo apt update && sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d meuservidor.com -d www.meuservidor.com
O certbot pergunta o e-mail, valida o domínio, escreve o VirtualHost SSL e oferece redirecionar HTTP para HTTPS automaticamente — aceite essa opção. A renovação já fica agendada via systemd timer ou cron.
Passo 2 (XAMPP/Windows) — Ativar o módulo SSL
No XAMPP, o SSL já vem compilado. Confirme no httpd.conf que estas linhas estão descomentadas:
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Depois, no httpd-ssl.conf, aponte para os arquivos do certificado (que você recebeu da CA ou gerou):
<VirtualHost _default_:443>
DocumentRoot "C:/xampp/htdocs"
ServerName meuservidor.com:443
SSLEngine on
SSLCertificateFile "conf/ssl.crt/meuservidor.crt"
SSLCertificateKeyFile "conf/ssl.key/meuservidor.key"
SSLCertificateChainFile "conf/ssl.crt/cadeia.crt"
</VirtualHost>
Passo 3 — Forçar HTTPS via .htaccess
Na raiz do site (htdocs), com mod_rewrite ativo:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
Reinicie o Apache pelo painel do XAMPP (ou sudo systemctl restart apache2 no Linux) e teste https://meuservidor.com.
Renovação automática — o passo que ninguém pode pular
O certificado Let's Encrypt expira em 90 dias. Se ele expirar, o site inteiro passa a mostrar erro de segurança e os jogadores somem. A renovação automática já é configurada pelo win-acme e pelo certbot, mas você deve verificar que ela funciona:
# Windows: conferir a tarefa agendada do win-acme
Get-ScheduledTask | Where-Object { $_.TaskName -like "*win-acme*" }
# Linux: testar a renovação em modo simulação (não altera nada)
sudo certbot renew --dry-run
Se o --dry-run terminar sem erro, a renovação real vai funcionar. Anote no calendário um lembrete trimestral só para conferir o cadeado, por garantia.
Corrigindo conteúdo misto (mixed content)
O erro mais comum depois de ativar HTTPS: o cadeado aparece "quebrado" ou o console mostra avisos de mixed content. Isso acontece quando uma página https:// carrega recursos por http:// — imagens, banners de ranking, CSS ou scripts. O navegador bloqueia parte desses recursos e reclama.
Solução: troque todas as URLs internas para HTTPS ou, melhor, para caminhos relativos:
<!-- Errado: força http dentro de página https -->
<img src="http://meuservidor.com/img/logo.png">
<!-- Certo: caminho relativo, herda o protocolo da página -->
<img src="/img/logo.png">
Para achar as ocorrências rapidamente, use a busca do editor por http:// em todos os arquivos do site e ajuste. Não esqueça de conferir também os campos de configuração salvos no banco (URLs de banner, links do painel).
Erros comuns e soluções
| Erro | Causa provável | Solução |
|---|---|---|
| "Não seguro" mesmo com certificado | Site ainda servindo por HTTP sem redirect | Ative o rewrite/redirect 301 para HTTPS |
| Cadeado quebrado / mixed content | Recursos carregados por http:// | Troque URLs internas para https ou caminho relativo |
| Emissão do Let's Encrypt falha | Porta 80 fechada ou DNS não propagado | Libere a 80 e confirme o registro A do domínio |
| Certificado expirou e site caiu | Renovação automática não rodou | Rode o renew manual e conserte a tarefa agendada |
| Login/cadastro parou após SSL | Connection string errada ou form com URL http | Ajuste a string do banco e as actions dos formulários |
| ERR_SSL_PROTOCOL_ERROR | Binding 443 ausente ou certificado errado | Recrie o binding HTTPS no IIS/VirtualHost no Apache |
| Aviso "certificado autoassinado" | Foi usado cert autoassinado | Emita um certificado de CA reconhecida (Let's Encrypt) |
Endurecendo a configuração (opcional, recomendado)
Depois que o HTTPS estiver estável por alguns dias, ative o HSTS para que o navegador nunca mais tente HTTP no seu domínio. No IIS, adicione o header no web.config; no Apache, no VirtualHost SSL:
# Apache — dentro do VirtualHost 443
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Cuidado: só ative HSTS quando tiver certeza de que tudo funciona em HTTPS, inclusive subdomínios. Uma vez que o navegador memoriza o HSTS, ele recusa qualquer acesso HTTP àquele domínio pelo tempo do max-age. Comece com um valor menor (por exemplo, algumas horas) enquanto testa.
Checklist de lançamento
- Domínio com registro A apontado e propagado para o IP do servidor
- Portas 80 e 443 liberadas no firewall do SO e do provedor
- Certificado válido de CA reconhecida instalado (não autoassinado)
- Binding HTTPS na porta 443 configurado (IIS) ou VirtualHost 443 (Apache)
- Redirecionamento 301 de HTTP para HTTPS ativo
- Renovação automática verificada (win-acme ou
certbot renew --dry-run) - Nenhum aviso de mixed content no console do navegador
- Login e cadastro testados e funcionando sob HTTPS
- URLs internas e do banco convertidas para https/relativas
- HSTS avaliado e ativado após período de estabilização
- Lembrete trimestral criado para conferir o cadeado
Com HTTPS ativo, forçado e com renovação automática, o site do seu servidor passa a proteger de verdade as credenciais dos jogadores e ganha a credibilidade que o cadeado transmite. É um passo pequeno em esforço e enorme em confiança.
Perguntas frequentes
Preciso de um domínio para ter HTTPS ou dá para usar só o IP?
Para um certificado gratuito e confiável (Let's Encrypt) você precisa de um domínio apontado para o IP do servidor. Com IP puro só é possível um certificado autoassinado, que gera aviso de segurança no navegador e não serve para o público.
O cadeado apareceu mas ainda mostra 'não totalmente seguro'. Por quê?
É conteúdo misto (mixed content). Alguma imagem, CSS ou script está sendo carregado por http:// dentro de uma página https://. Troque todos os links internos para https ou caminhos relativos e recarregue.
Com que frequência preciso renovar o certificado Let's Encrypt?
A cada 90 dias. Por isso a renovação automática é obrigatória: com win-acme no Windows ou certbot no Linux, uma tarefa agendada renova sozinha antes de expirar. Sem isso, o site quebra a cada trimestre.
Ativei o HTTPS e o login/cadastro do site parou. O que houve?
Geralmente é a connection string ou uma URL absoluta http:// no formulário sendo bloqueada como conteúdo misto. Verifique a string de conexão do banco e troque as actions dos formulários para https ou caminho relativo.
Devo forçar HTTPS para todos os acessos?
Sim. Deixe o site aceitar HTTP apenas para redirecionar (301) para HTTPS. Depois de estável, ative HSTS para que o navegador nunca mais tente HTTP. Assim ninguém trafega login em texto puro.