O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Website

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.

BR Bruno · Atualizado em 15 jun 2026 · ⏱ 14 min de leitura
Resposta rápida

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 A do domínio (e do www) 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:

ConceitoO que éPor que importa
Certificado SSL/TLSArquivo que prova a identidade do domínio e habilita a criptografiaSem 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 443Porta padrão do HTTPSO 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

  1. Acesse o servidor via RDP como administrador.
  2. Confirme que o site já responde em http://meuservidor.com.
  3. 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

  1. Baixe o win-acme (versão x64) do repositório oficial em https://github.com/win-acme/win-acme/releases.
  2. Extraia em C:\ssl-tools\wacs\.
  3. Execute o wacs.exe como administrador.
  4. No menu, escolha a opção de criar um certificado novo simples (normalmente a tecla N).
  5. O win-acme lista os sites do IIS. Selecione o site do seu MU.
  6. Escolha os hostnames (meuservidor.com e www.meuservidor.com).
  7. 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

ErroCausa provávelSolução
"Não seguro" mesmo com certificadoSite ainda servindo por HTTP sem redirectAtive o rewrite/redirect 301 para HTTPS
Cadeado quebrado / mixed contentRecursos carregados por http://Troque URLs internas para https ou caminho relativo
Emissão do Let's Encrypt falhaPorta 80 fechada ou DNS não propagadoLibere a 80 e confirme o registro A do domínio
Certificado expirou e site caiuRenovação automática não rodouRode o renew manual e conserte a tarefa agendada
Login/cadastro parou após SSLConnection string errada ou form com URL httpAjuste a string do banco e as actions dos formulários
ERR_SSL_PROTOCOL_ERRORBinding 443 ausente ou certificado erradoRecrie o binding HTTPS no IIS/VirtualHost no Apache
Aviso "certificado autoassinado"Foi usado cert autoassinadoEmita 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.

BR
Editor de eventos, mapas e itens

Bruno é especialista em eventos, mapas, bosses e economia de itens do MU Online. Documenta cada detalhe com base em jogo real.

Continue lendo

Artigos relacionados