# SSL の使用

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

開発時に SSL を使用する必要がある場合があります。これは、ほとんどのウェブ開発シナリオのようにセキュリティが求められる環境で作業する場合です。Sisk は HttpListener の上に構築されていますが、HttpListener はネイティブの HTTPS をサポートせず、HTTP のみです。ただし、Sisk で SSL を利用できる回避策がいくつかあります。以下をご覧ください：

## Sisk.Cadente.CoreEngine を使用する場合

- 利用可能なプラットフォーム: Linux, macOS, Windows
- 作業負荷: 簡単

実験的な [**Cadente**](https://docs.sisk-framework.org/ja/docs/cadente.md) エンジンを Sisk プロジェクトで使用することが可能です。コンピュータやプロジェクトに追加の設定は不要です。Sisk サーバーで Cadente サーバーを利用するには、プロジェクトに `Sisk.Cadente.CoreEngine` パッケージをインストールする必要があります。

SSL を構成するには、ビルダーの `UseSsl` と `UseEngine` メソッドを使用します：

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

> Note: このパッケージはまだ実験段階です。

## Windows の IIS を使用する場合

- 利用可能なプラットフォーム: Windows
- 作業負荷: 中程度

Windows を使用している場合、IIS を利用して HTTP サーバーで SSL を有効にできます。この機能を利用するには、アプリケーションを「localhost」以外のホストでリッスンさせたい場合、事前に [このチュートリアル](https://docs.sisk-framework.org/ja/docs/registering-namespace.md) を確認しておくことをお勧めします。

この機能を利用するには、Windows の機能から IIS をインストールする必要があります。IIS は Windows および Windows Server のユーザーに無料で提供されています。アプリケーションで SSL を構成するには、自己署名であっても SSL 証明書を用意してください。その後、[IIS 7 以降での SSL 設定方法](https://learn.microsoft.com/en-us/iis/manage/configuring-security/how-to-set-up-ssl-on-iis) を参照できます。

## mitmproxy を使用する場合

- 利用可能なプラットフォーム: Linux, macOS, Windows
- 作業負荷: 簡単

**mitmproxy** は、開発者やセキュリティテスターがクライアント（例: Web ブラウザー）とサーバー間の HTTP および HTTPS トラフィックを検査、変更、記録できるインターセプトプロキシツールです。**mitmdump** ユーティリティを使用して、クライアントと Sisk アプリケーション間にリバース SSL プロキシを開始できます。

1. まず、マシンに [mitmproxy](https://mitmproxy.org/) をインストールします。
2. Sisk アプリケーションを起動します。この例では、非暗号化 HTTP ポートとして 8000 を使用します。
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 でも非推奨となっています。現在の Cadente API に対してはコンパイルできません。使用しないでください。代わりに [Cadente エンジン](#through-the-siskcadentecoreengine) のネイティブ SSL サポートを使用してください。
