0

我在使用 VS2015 FW 4.6、SignalR 2.3.0 构建的 Windows 服务中有一个自托管 SignalR 应用程序。使用端口 6286 (https) 和 6287 (http) 和“*”作为 IP,这已经运行了 2 年多。我想将这些端口分别切换到 80 和 443 并将通配符证书应用到 443。由于有网站在 IP 192.168.100.7 上使用证书,我向我的服务器添加了另一个 IP 地址(192.168.100.3)应用了证书和:

netsh http add sslcert ipport=192.168.100.3:443 appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=xxxxxxxxxxxxxxxxxxxxxxxxx

我可以通过以下方式验证成功:

netsh http show sslcert ipport=192.168.100.3:443

因此,我使用以下内容启动 WebApp:

SignalR = WebApp.Start("http://192.168.100.3:80/");
SignalRSSL = WebApp.Start("https://192.168.100.3:443/");

他们似乎开始正常,没有错误,如果我使用http://192.168.100.3/signalr/hubs它工作正常。但是,https: //192.168.100.3:443/signalr/hubs给出了“意外关闭的连接”错误。

我做错了什么,还有什么要为 https 设置的吗?

4

1 回答 1

0

我的错误...我正在使用内部 IP 和相应的外部 IP 来测试它。我意识到通配符证书不绑定到 IP,它绑定到域!因此,我为带有通配符域的 IP 创建了一条 A 记录,并且它起作用了。

但是,我现在有一个不同的问题,它试图与 Web 服务器的域而不是 signalR 域协商以发送消息!

https://webserverdomain/signalr/negotiate?clientProtocol=1.5....  

我不知道它在哪里选择了 Web 服务器的名称,但它的不同之处足以让它成为另一篇文章的主题。

于 2018-11-26T18:41:35.917 回答