El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Servidor

Cómo Configurar SSL y Certificados en el Servidor de MU Online

Guía técnica para configurar SSL/TLS y certificados digitales en tu servidor privado de MU Online, protegiendo el panel web y las comunicaciones administrativas.

EQ Equipo ViciadosMU · Actualizado el 4 jul 2026 · ⏱ 18 min de lectura

Por Qué SSL es Esencial para tu Panel Administrativo

Cuando administras un servidor privado de MU Online, el panel web es la interfaz más vulnerable del sistema. Si el panel webEngineNET o tu CMS PHP sirven por HTTP plano, cualquier persona en la misma red que el administrador puede interceptar el nombre de usuario, la contraseña y las cookies de sesión con una herramienta básica de captura de tráfico. Esto aplica tanto al WiFi del administrador como a cualquier nodo intermedio entre el navegador y el VPS.

SSL/TLS cifra la conexión entre el navegador y el servidor, haciendo que esas credenciales sean ilegibles en tránsito. Para un servidor privado serio, esto no es opcional.

Nota: Esta guía cubre la configuración de SSL en Windows Server 2016/2019 con IIS 10 y en entornos Linux con Apache/Nginx. El protocolo de juego en sí (puertos 44405 y 55901+) no usa TLS; el cifrado se aplica únicamente al panel web y al sitio del servidor.

Paso 1: Elegir el Tipo de Certificado Adecuado

Existen tres opciones prácticas para un servidor privado de MU Online:

Tipo de certificado → Cuándo usarlo

Certificado autofirmado        → Solo para pruebas en LAN o acceso por IP
                                  El navegador mostrará advertencia de seguridad
                                  No válido para sitios públicos

Let's Encrypt (gratuito)       → Dominio público apuntando al VPS
                                  Renovación automática cada 90 días
                                  Ideal para panel web y sitio del servidor

Certificado de CA comercial    → Organizaciones con requisitos de cumplimiento
                                  Válido 1-2 años, renovación manual
                                  No necesario para la mayoría de servidores privados

Para la mayoría de servidores privados de MU Online con un dominio propio, Let's Encrypt es la elección correcta: gratuito, automatizado y reconocido por todos los navegadores modernos sin advertencias.

> [!CONSEJO] > Antes de emitir cualquier certificado, asegúrate de que tu dominio tenga un registro A apuntando al IP del VPS y que el puerto 80 esté abierto en el firewall del servidor. Let's Encrypt necesita validar el dominio via HTTP antes de emitir el certificado HTTPS.


Paso 2: Instalar Certbot y Emitir el Certificado (Windows Server + IIS)

Certbot es la herramienta oficial de Let's Encrypt. En Windows Server con IIS, el proceso es el siguiente.

Primero, descarga el instalador de Certbot para Windows desde el sitio oficial de certbot.eff.org e instálalo con privilegios de administrador. Después abre PowerShell como Administrador y ejecuta:

# Verificar que Certbot está en el PATH
certbot --version

# Emitir certificado para tu dominio con plugin IIS
certbot certonly --webroot `
  --webroot-path "C:\inetpub\wwwroot" `
  --domain tudominio.com `
  --domain www.tudominio.com `
  --email [email protected] `
  --agree-tos `
  --non-interactive

# El certificado queda en:
# C:\Certbot\live\tudominio.com\fullchain.pem  → certificado + cadena
# C:\Certbot\live\tudominio.com\privkey.pem    → clave privada

> [!ATENCION] > La clave privada (privkey.pem) nunca debe salir del servidor ni ser compartida. Si sospechas que fue comprometida, revoca el certificado inmediatamente con certbot revoke --cert-path "C:\Certbot\live\tudominio.com\cert.pem" y emite uno nuevo.


Paso 3: Convertir el Certificado a Formato PFX para IIS

IIS en Windows no importa certificados en formato PEM directamente. Necesitas convertirlos a PFX (PKCS#12) usando OpenSSL:

# Instalar OpenSSL para Windows si no lo tienes (win32.openssl.org)
# Luego ejecutar en PowerShell como Administrador:

$certPath = "C:\Certbot\live\tudominio.com"
$outputPath = "C:\Certificados\tudominio.pfx"
$password = "contraseña_segura_aqui"  # → cambia esto por una contraseña real

# Crear directorio de salida
New-Item -ItemType Directory -Force -Path "C:\Certificados"

# Convertir PEM → PFX
& "C:\OpenSSL-Win64\bin\openssl.exe" pkcs12 -export `
  -out $outputPath `
  -inkey "$certPath\privkey.pem" `
  -in "$certPath\fullchain.pem" `
  -passout "pass:$password"

Write-Host "Certificado PFX generado en: $outputPath"

Paso 4: Importar el Certificado en IIS y Crear el Binding HTTPS

Con el archivo PFX generado, ahora lo importas en IIS:

# Importar certificado en el almacén de certificados de Windows
$pfxPath = "C:\Certificados\tudominio.pfx"
$password = ConvertTo-SecureString "contraseña_segura_aqui" -AsPlainText -Force

Import-PfxCertificate `
  -FilePath $pfxPath `
  -CertStoreLocation Cert:\LocalMachine\My `
  -Password $password

# Obtener el thumbprint del certificado recién importado
$thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My |
  Where-Object { $_.Subject -like "*tudominio.com*" } |
  Sort-Object NotAfter -Descending |
  Select-Object -First 1).Thumbprint

Write-Host "Thumbprint del certificado: $thumbprint"

# Crear binding HTTPS en el sitio de IIS
# Reemplaza "Default Web Site" por el nombre real de tu sitio en IIS
New-WebBinding `
  -Name "Default Web Site" `
  -Protocol "https" `
  -Port 443 `
  -HostHeader "tudominio.com" `
  -SslFlags 1

# Asignar el certificado al binding creado
$binding = Get-WebBinding `
  -Name "Default Web Site" `
  -Protocol "https" `
  -Port 443
$binding.AddSslCertificate($thumbprint, "My")

Write-Host "Binding HTTPS configurado correctamente."

Después de ejecutar estos comandos, abre el Administrador de IIS, navega al sitio → Bindings y verifica que aparezca el binding HTTPS en el puerto 443 con tu certificado asignado.


Paso 5: Forzar Redirección de HTTP a HTTPS

Con el certificado activo, el siguiente paso es redirigir todo el tráfico HTTP al HTTPS. Esto se hace en IIS con el módulo URL Rewrite. Si no lo tienes instalado, descárgalo desde iis.net/downloads e instálalo en el servidor.

Crea o edita el archivo web.config en la raíz del sitio:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Forzar HTTPS" stopProcessing="true">
          <!-- Condición: la solicitud llega por HTTP (no HTTPS) -->
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
          </conditions>
          <!-- Acción: redirigir permanentemente a HTTPS manteniendo la URL -->
          <action type="Redirect"
                  url="https://{HTTP_HOST}/{R:1}"
                  redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

> [!CONSEJO] > Si tu servidor de actualizaciones (launcher) descarga archivos de patch desde el mismo dominio usando rutas HTTP directas, exclúyelas de la redirección agregando una condición adicional antes de la regla: <add input="{REQUEST_URI}" pattern="^/updates/" negate="true" />. De lo contrario el launcher no podrá descargar los archivos.


Paso 6: Verificar la Configuración SSL

Una vez configurado todo, verifica que el certificado funciona correctamente:

# Verificar desde PowerShell que el certificado responde correctamente
$url = "https://tudominio.com"
try {
    $response = Invoke-WebRequest -Uri $url -UseBasicParsing
    Write-Host "Estado HTTP: $($response.StatusCode)"  # → debe ser 200
} catch {
    Write-Host "Error: $_"
}

# Verificar la fecha de vencimiento del certificado
$cert = [System.Net.ServicePointManager]::SecurityProtocol
$request = [System.Net.HttpWebRequest]::Create($url)
$request.GetResponse() | Out-Null
$expiry = $request.ServicePoint.Certificate.GetExpirationDateString()
Write-Host "Certificado vence: $expiry"

# Probar renovación automática (modo simulación, sin cambios reales)
certbot renew --dry-run

Además, usa la herramienta online SSL Labs (ssllabs.com/ssltest) ingresando tu dominio para obtener un análisis detallado del grado de seguridad de tu configuración TLS. Un servidor bien configurado debe obtener al menos una calificación A.


Renovación Automática del Certificado

Let's Encrypt emite certificados con validez de 90 días. Certbot configura automáticamente una tarea en el Programador de Tareas de Windows para renovar antes del vencimiento, pero es buena práctica verificarla:

# Verificar que la tarea de renovación existe en el Programador de Tareas
Get-ScheduledTask -TaskName "Certbot Renew*" | Select-Object TaskName, State

# Si no existe, crear la tarea manualmente (renovación diaria a las 3am)
$action = New-ScheduledTaskAction `
  -Execute "certbot" `
  -Argument "renew --quiet"

$trigger = New-ScheduledTaskTrigger -Daily -At "03:00"

$settings = New-ScheduledTaskSettingsSet `
  -ExecutionTimeLimit (New-TimeSpan -Hours 1) `
  -RestartCount 3 `
  -RestartInterval (New-TimeSpan -Minutes 5)

Register-ScheduledTask `
  -TaskName "Certbot Renew Task" `
  -Action $action `
  -Trigger $trigger `
  -Settings $settings `
  -RunLevel Highest `
  -Force

Write-Host "Tarea de renovación registrada → se ejecuta diariamente a las 03:00"
Nota: Después de cada renovación exitosa, Certbot no actualiza automáticamente el binding de IIS. Puedes configurar un script post-renovación en C:\Certbot\renewal-hooks\deploy\ que ejecute los pasos de importación y asignación del certificado al binding. Esto garantiza que IIS use el nuevo certificado sin intervención manual.

Solución de Problemas Comunes

El navegador muestra "Tu conexión no es privada": El certificado autofirmado no es reconocido por navegadores públicos. Usa Let's Encrypt para producción.

Certbot falla con "Connection refused" en el puerto 80: Verifica que el firewall del VPS permite el puerto 80 entrante durante la emisión. Después de emitir, puedes cerrar el 80 si solo necesitas HTTPS.

IIS muestra el sitio en HTTP después de agregar el binding: Asegúrate de que el certificado está asignado al binding HTTPS, no solo creado el binding vacío. El campo "SSL certificate" en IIS Manager debe mostrar el nombre de tu certificado.

El panel webEngineNET no carga en HTTPS: Algunos paneles de administración de MU Online tienen rutas absolutas hardcodeadas a HTTP en sus archivos de configuración. Revisa los archivos de configuración del panel y actualiza las URLs base a https://.

Con SSL correctamente configurado, las credenciales del panel de administración y las sesiones de tus administradores viajan cifradas, eliminando uno de los vectores de ataque más simples contra servidores privados de MU Online.

Perguntas frequentes

¿MU Online necesita SSL en el canal de juego (puertos 44405/55901)?

El protocolo de red del cliente de MU Online no usa TLS nativo en el canal de juego. Los puertos ConnectServer y GameServer operan con el protocolo propietario del juego. SSL/TLS se aplica al panel web de administración (webEngineNET, CMS PHP), al acceso HTTPS al sitio del servidor y opcionalmente al servidor FTP de actualizaciones. Cifrar el tráfico web administrativo es lo que realmente protege credenciales y datos sensibles.

¿Let's Encrypt funciona con un dominio apuntando al VPS?

Sí, siempre que el dominio apunte correctamente al IP del VPS mediante registro A en el DNS. Certbot valida el dominio haciendo una solicitud HTTP al puerto 80, por lo que ese puerto debe estar accesible durante la emisión. Después de emitir el certificado puedes redirigir todo el tráfico a HTTPS y cerrar el 80 en el firewall si lo deseas.

¿Qué pasa cuando el certificado de Let's Encrypt vence?

Let's Encrypt emite certificados de 90 días. Certbot instala por defecto una tarea programada (tarea de Windows o cron en Linux) que renueva automáticamente 30 días antes del vencimiento. Puedes verificar el estado con 'certbot renew --dry-run'. Si el servidor IIS está bien configurado, la renovación es silenciosa y no requiere intervención manual.

¿Cómo forzar HTTPS en el panel web sin romper el acceso al launcher?

En IIS, crea una regla de redirección en HTTP Redirect o usa URL Rewrite para redirigir todo el tráfico HTTP al equivalente HTTPS. Excepciona la ruta del directorio de actualizaciones del launcher si este descarga los archivos de patch por HTTP directo, o actualiza el launcher para usar HTTPS también. Nunca fuerces redirección en el mismo binding del puerto 443.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados