# Trabajando con SSL

Source: https://docs.sisk-framework.org/es/docs/ssl.html

Trabajar con SSL en desarrollo puede ser necesario cuando se trabaja en contextos que requieren seguridad, como la mayoría de los escenarios de desarrollo web. Sisk funciona sobre HttpListener, que no soporta HTTPS nativo, solo HTTP. Sin embargo, existen soluciones alternativas que permiten trabajar con SSL en Sisk. Véalas a continuación:

## A través de Sisk.Cadente.CoreEngine

- Disponible en: Linux, macOS, Windows
- Esfuerzo: fácil

Es posible usar el motor experimental [**Cadente**](https://docs.sisk-framework.org/es/docs/cadente.md) en proyectos Sisk, sin requerir configuración adicional en el equipo o en el proyecto. Necesitarás instalar el paquete `Sisk.Cadente.CoreEngine` en tu proyecto para poder usar el servidor Cadente en el servidor Sisk.

Para configurar SSL, puedes usar los métodos `UseSsl` y `UseEngine` del constructor:

```csharp
using var http = HttpServer.CreateBuilder()
    .UseEngine<CadenteHttpServerEngine>()
    .UseSsl(CertificateHelper.CreateTrustedDevelopmentCertificate("localhost"))
```

> Nota: este paquete sigue en fase experimental.

## A través de IIS en Windows

- Disponible en: Windows
- Esfuerzo: medio

Si estás en Windows, puedes usar IIS para habilitar SSL en tu servidor HTTP. Para que esto funcione, es aconsejable que sigas [este tutorial](https://docs.sisk-framework.org/es/docs/registering-namespace.md) de antemano si deseas que tu aplicación escuche en un host distinto a "localhost."

Para que funcione, debes instalar IIS a través de las características de Windows. IIS está disponible de forma gratuita para usuarios de Windows y Windows Server. Para configurar SSL en tu aplicación, ten listo el certificado SSL, aunque sea autofirmado. Luego, puedes consultar [cómo configurar SSL en IIS 7 o superior](https://learn.microsoft.com/en-us/iis/manage/configuring-security/how-to-set-up-ssl-on-iis).

## A través de mitmproxy

- Disponible en: Linux, macOS, Windows
- Esfuerzo: fácil

**mitmproxy** es una herramienta de proxy de interceptación que permite a desarrolladores y evaluadores de seguridad inspeccionar, modificar y registrar el tráfico HTTP y HTTPS entre un cliente (como un navegador web) y un servidor. Puedes usar la utilidad **mitmdump** para iniciar un proxy SSL inverso entre tu cliente y tu aplicación Sisk.

1. En primer lugar, instala [mitmproxy](https://mitmproxy.org/) en tu máquina.
2. Inicia tu aplicación Sisk. Para este ejemplo, usaremos el puerto 8000 como el puerto HTTP inseguro.
3. Inicia el servidor mitmproxy para escuchar en el puerto seguro 8001:

```sh
mitmdump --mode reverse:http://localhost:8000/ -p 8001
```

¡Y ya estás listo! Ya puedes acceder a tu aplicación a través de `https://localhost:8001/`. Tu aplicación no necesita estar ejecutándose para que inicies `mitmdump`.

Alternativamente, puedes agregar una referencia al [asistente de mitmproxy](https://github.com/sisk-http/core/tree/main/extensions/Sisk.Helpers.mitmproxy) en tu proyecto. Esto aún requiere que mitmproxy esté instalado en tu computadora.

## Paquete Sisk.SslProxy (descontinuado)

> [!CAUTION]
>
> El paquete Sisk.SslProxy está descontinuado y obsoleto en NuGet. Ya no compila contra la API actual de Cadente. No lo uses: utiliza el soporte SSL nativo del [motor Cadente](#through-the-siskcadentecoreengine) en su lugar.
