Habilitación de SSL en MikroTik Hotspot
Esta guía explica cómo habilitar SSL (HTTPS) en la página de inicio de sesión de MikroTik Hotspot utilizando un certificado ACME gratuito emitido a través de IP Cloud. Siga los pasos a continuación utilizando la interfaz gráfica o la CLI de RouterOS.
Compatibilidad
Social WiFi ha sido probado y se ha comprobado que funciona en las siguientes combinaciones:
- RouterOS versión 7.19 y superior
Requisitos previos
Instalación
-
Habilitar IP Cloud
Navegue a IP -> Cloud y establezca DDNS Enabled en
yes.
Espere hasta que aparezca el DNS Name.

-
Solicitar un certificado ACME
Navegue a System (1) -> Certificates (2), luego haga clic en Add ACME (3). Ingrese cualquier nombre en el campo Name, por ejemplo
mt_cert, e ingrese el dominio proporcionado en IP -> Cloud -> DNS Name.Después de completar los campos, haga clic en Add ACME Certificate (4).

Después de agregar el certificado, espere aproximadamente un minuto hasta que el estado cambie de Ea a Ka.

-
Agregar el certificado al Hotspot
Navegue a IP (1) -> Hotspot (2) -> Server Profiles (3), luego haga doble clic en el perfil predeterminado (4). En la pestaña General, cambie DNS Name de
logging.sw.comal dominio proporcionado en IP -> Cloud -> DNS Name.
Vaya a la pestaña Login. En Login By, seleccione HTTPS únicamente, luego, debajo, en el campo SSL Certificate, seleccione el certificado generado en el paso anterior.

Después de completar los pasos, haga clic en Apply.
Abra la terminal e ingrese los siguientes comandos (copie incluyendo las llaves).
{:local minMajor 7:local minMinor 19:local pollInterval 5s:local maxPollAttempts 24:local acmeDirectoryUrl "https://acme-v02.api.letsencrypt.org/directory":local hotspotProfileName "default"
:local verStr [/system resource get version]:local verNum [:pick $verStr 0 [:find $verStr " "]]:local dot1 [:find $verNum "."]:local major [:tonum [:pick $verNum 0 $dot1]]:local rest [:pick $verNum ($dot1 + 1) [:len $verNum]]:local dot2 [:find $rest "."]:local minor 0:if ([:typeof $dot2] = "nil") do={ :set minor [:tonum $rest]} else={ :set minor [:tonum [:pick $rest 0 $dot2]]}
:if (($major < $minMajor) || (($major = $minMajor) && ($minor < $minMinor))) do={ :error "Unsupported RouterOS version: $verStr is below the required $minMajor.$minMinor"}
/ip cloud set ddns-enabled=yes update-time=yes:put "Waiting for DDNS domain assignment...":delay 15s
:local dnsName [/ip cloud get dns-name]:put "DDNS name: $dnsName"
:if ([:len $dnsName] = 0) do={ :error "No dns-name assigned in IP Cloud"}
/certificate add-acme directory-url=$acmeDirectoryUrl domain-names=$dnsName:put "Waiting for ACME certificate issuance..."
:local certId "":local i 0:while ([:len $certId] = 0 && $i < $maxPollAttempts) do={ :delay $pollInterval :set certId [/certificate find where common-name=$dnsName] :set i ($i + 1)}
:if ([:len $certId] = 0) do={ :error "ACME certificate request timed out"}
:local certName [/certificate get $certId name]:put "Certificate name: $certName"
/ip hotspot profile set [find name=$hotspotProfileName] dns-name=$dnsName ssl-certificate=$certName login-by=https
:put "SSL setup complete for domain: $dnsName"}Volver a descargar los archivos del hotspot
Ejecute el siguiente comando en la terminal para descargar nuevas versiones de los archivos del hotspot y sobrescribir los antiguos.
{ :local downloadEndpoint "https://login.socialwifi.com/installation/mikrotik/download"; :local fileNames {"login.html"; "rlogin.html"; "alogin.html"; "flogin.html"; "md5.js"} :local destinationDirectory ""; :if ([:len [/file find name="flash" type="disk"]] > 0) do={ :set destinationDirectory "/flash/"; } :local ether1Mac ([/interface get [find name="ether1"]]->"mac-address"); :foreach fileName in=$fileNames do={ :put "Downloading file: $downloadEndpoint/$fileName\?mac=$ether1Mac" /tool fetch url="$downloadEndpoint/$fileName\?mac=$ether1Mac" dst-path="$destinationDirectory$fileName" }}Probar la solución
Conéctese a la red WiFi y abra la página de inicio de sesión. El navegador debería mostrar un certificado válido para el dominio configurado en lugar de una advertencia de seguridad.