# Работа с SSL

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

Работа с SSL в процессе разработки может быть необходима при работе в контекстах, требующих безопасности, таких как большинство сценариев веб‑разработки. Sisk работает поверх HttpListener, который не поддерживает нативный HTTPS, только HTTP. Однако существуют обходные пути, позволяющие использовать SSL в Sisk. См. ниже:

## Через Sisk.Cadente.CoreEngine

- Доступно на: Linux, macOS, Windows
- Сложность: легко

Можно использовать экспериментальный движок [**Cadente**](https://docs.sisk-framework.org/ru/docs/cadente.md) в проектах Sisk без необходимости дополнительной настройки компьютера или проекта. Вам потребуется установить пакет `Sisk.Cadente.CoreEngine` в ваш проект, чтобы иметь возможность использовать сервер Cadente в сервере Sisk.

Для настройки SSL вы можете использовать методы `UseSsl` и `UseEngine` билдера:

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

> Примечание: этот пакет всё ещё находится в экспериментальной фазе.

## Через IIS в Windows

- Доступно на: Windows
- Сложность: средняя

Если вы используете Windows, вы можете воспользоваться IIS для включения SSL на вашем HTTP‑сервере. Чтобы это работало, рекомендуется предварительно пройти [этот учебник](https://docs.sisk-framework.org/ru/docs/registering-namespace.md), если вы хотите, чтобы ваше приложение слушало хост, отличный от «localhost».

Для этого необходимо установить IIS через компоненты Windows. IIS доступен бесплатно пользователям Windows и Windows Server. Чтобы настроить SSL в вашем приложении, подготовьте SSL‑сертификат, даже если он самоподписан. Затем вы можете ознакомиться с [инструкцией по настройке SSL в IIS 7 и выше](https://learn.microsoft.com/en-us/iis/manage/configuring-security/how-to-set-up-ssl-on-iis).

## Через mitmproxy

- Доступно на: Linux, macOS, Windows
- Сложность: легко

**mitmproxy** — это инструмент перехватывающего прокси, позволяющий разработчикам и специалистам по безопасности инспектировать, изменять и записывать HTTP и HTTPS трафик между клиентом (например, веб‑браузером) и сервером. Вы можете использовать утилиту **mitmdump** для запуска обратного SSL‑прокси между вашим клиентом и приложением Sisk.

1. Сначала установите [mitmproxy](https://mitmproxy.org/) на ваш компьютер.
2. Запустите ваше приложение Sisk. Для этого примера будем использовать порт 8000 как небезопасный HTTP‑порт.
3. Запустите сервер mitmproxy, чтобы он слушал защищённый порт 8001:

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

И всё готово! Вы уже можете получить доступ к вашему приложению по адресу `https://localhost:8001/`. Ваше приложение не обязано быть запущено, чтобы вы могли запустить `mitmdump`.

В качестве альтернативы вы можете добавить ссылку на [mitmproxy helper](https://github.com/sisk-http/core/tree/main/extensions/Sisk.Helpers.mitmproxy) в ваш проект. Это всё равно требует, чтобы mitmproxy был установлен на вашем компьютере.

## Пакет Sisk.SslProxy (прекращённый)

> [!CAUTION]
>
> Пакет Sisk.SslProxy прекращён и помечен как устаревший в NuGet. Он больше не компилируется с текущим API Cadente. Не используйте его: вместо этого используйте нативную поддержку SSL в [движке Cadente](#through-the-siskcadentecoreengine).
