使用 signalR 核心客户端忽略 SSL 错误

我正在制作一个应用程序,其中涉及 localhost 上的网站作为 Asp.net Core 和 SignalR Core 的用户界面。

我的问题是在启动连接时出现身份验证异常。我知道会发生这种情况,因为我没有跑过dotnet dev-certs https --trust。但我不能指望普通用户运行此命令或安装 dotnet SDK。

我试过使用

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

在我的 Startup.cs(和其他地方,但我知道这是一个全局设置。无论如何它是在 HubConnection 之前执行的)无济于事。我还尝试设置一个新的 HttpMessageHandlerFactory,但文档告诉我这不会影响 Websockets。

我不相信是一个解决方案,因为我不能使用不同的 HttpClient(除非我弄错了)

如您所见,我根本没有连接到 https:

connection = new HubConnectionBuilder().WithUrl("http://localhost:5000/MiniLyokoHub" ).Build();

所以我不明白为什么它甚至试图获得证书。

这是完整的错误: https ://pastebin.com/1ELbeWtc

我该如何解决这个问题?我不需要证书,因为用户将连接到他们自己的本地主机。还是我不应该使用 websockets?


慕丝7291255
浏览 125回答 2
2回答

慕运维8079593

连接到 HTTPS 时,要始终在 SignalR Core 客户端中验证 SSL 证书,您应该在配置中执行此操作HttpMessageHandlerFactory。HttpConnectionOptions在这样的方法中使用WithUrl:connection = new HubConnectionBuilder().WithUrl("https://localhost:443/MiniLyokoHub", (opts) =>{    opts.HttpMessageHandlerFactory = (message) =>    {        if (message is HttpClientHandler clientHandler)            // always verify the SSL certificate            clientHandler.ServerCertificateCustomValidationCallback +=                (sender, certificate, chain, sslPolicyErrors) => { return true; };        return message;    };}).Build();

慕码人8056858

似乎 SignalR Core Client 也受Https 重定向影响, 这就是它无法连接到 http 端口的原因。对于我的用例,我只需要在 Startup.cs 中禁用它
打开App,查看更多内容
随时随地看视频慕课网APP