# SSL 代理（已停用）

Source: https://docs.sisk-framework.org/zh-cn/docs/extensions/ssl-proxy.html

> [!CAUTION]
> **已停用，请勿使用。** Sisk.SslProxy 包不再维护，在 NuGet 上已被标记为已弃用，且没有替代包。它已无法针对当前的 Cadente API 编译。若要提供 HTTPS，请使用 [Cadente engine](https://docs.sisk-framework.org/zh-cn/docs/cadente.md) 的原生 SSL 支持或在 [Working with SSL](https://docs.sisk-framework.org/zh-cn/docs/ssl.md) 中的选项之一。此页面仅作历史参考保留。

Sisk SSL 代理是一个模块，为 Sisk 中的 [ListeningHost](https://docs.sisk-framework.org/api/Sisk.Core.Http.ListeningHost.md) 提供 HTTPS 连接，并将 HTTPS 消息路由到不安全的 HTTP 上下文。该模块旨在为使用 [HttpListener](https://learn.microsoft.com/pt-br/dotnet/api/system.net.httplistener?view=net-8.0) 运行的服务提供 SSL 连接，而 HttpListener 不支持 SSL。

代理在同一应用程序内部运行，监听 HTTP/1.1 消息，并以相同的协议转发给 Sisk。目前，此功能仍属高度实验性，可能不够稳定，不能在生产环境中使用。

目前，SslProxy 支持几乎所有 HTTP/1.1 特性，如 keep-alive、分块编码、WebSocket 等。要打开到 SSL 代理的连接，会创建到目标服务器的 TCP 连接，并将代理转发到已建立的连接上。

SslProxy 可以通过 `HttpServer.CreateBuilder` 使用，如下所示：

```csharp
using var app = HttpServer.CreateBuilder(port: 5555)
    .UseRouter(r =>
    {
        r.MapGet("/", request =>
        {
            return new HttpResponse("Hello, world!");
        });
    })
    // add SSL to the project
    .UseSsl(
        sslListeningPort: 5567,
        new X509Certificate2(@".\ssl.pfx", password: "12345")
    )
    .Build();

app.Start();
```

必须为代理提供有效的 SSL 证书。为确保浏览器接受该证书，请记得将其导入操作系统，以便正常工作。
