我正试图从我的C#HTTP服务器上获得一个在Ubuntu上运行的HTTPS连接。我在HTTPListener中启用了HTTPS,就像在Windows上一样,但我无法建立连接。
来自文档:
如果使用https创建HttpListener,则必须为该侦听器选择服务器证书。否则,此HttpListener的HttpWebRequest查询将失败,并意外关闭连接。
我看到的正是这种情况。文件建议:
您可以使用Network Shell(netsh.exe(配置服务器证书和其他侦听器选项。有关详细信息,请参阅Network Shell(netsh(。该可执行文件开始随Windows Server 2008和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://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-6.0