Ubuntu 上的 C# HTTPS 服务器

C# HTTPS Server on Ubuntu

我正在尝试从我的 C# HTTP 服务器获取在 Ubuntu 上工作的 HTTPS 连接。我已经像在 Windows 上那样在我的 HTTPListener 中启用了 HTTPS,但是我无法建立连接。

来自文档:

If you create an HttpListener using https, you must select a Server Certificate for that listener. Otherwise, an HttpWebRequest query of this HttpListener will fail with an unexpected close of the connection.

我确实看到了这种情况。文档建议:

You can configure Server Certificates and other listener options by using Network Shell (netsh.exe). See Network Shell (Netsh) for more details. The executable began shipping with Windows Server 2008 and Windows Vista.

由于我在 Ubuntu 并且我的服务器是 运行 Ubuntu 服务器,所以我无法访问此工具。如何在 Ubuntu 中实现相同的效果?

这取决于所使用的后端 Web 服务器。在 Ubuntu,您可能会使用 Kestrel。对于 Kestrel,可以使用以下方式定义 SSL 证书:

"Kestrel": {
"Certificates": {
  "Default": {
    "Path": "<path>/fullchain.pem",
    "KeyPath": "<path>/privkey.pem"
  }
},
"Endpoints": {
  "Http": {
    "Url": "http://*:80"
  },
  "Https": {
    "Url": "https://*:443"
  }
}

在appsettings.json

有关如何为 Kestrel 设置 SSL 的更多信息,请参阅:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0