我现在走在路的尽头,看不到任何解决方案。只是一些背景,我有一个.net网络应用程序,我还有一个自托管的SignalR端应用程序,客户可以下载以帮助我的网站与他们的桌面进行交互。当客户端安装此应用程序时,它需要自签名证书并安装到受信任的根证书颁发机构和个人证书存储区。
我的网站使用SSL与管理局签署的有效证书,以便它通过https运行,客户端在URL栏中看到一个漂亮的绿色锁,使每个人都感到在应用程序中安全。为了让SignalR客户端在JS中工作,我必须使用https(https://localhost:8080/signalr/.../)进行调用。现在,为了解决这个问题,我创建了一个自签名证书并绑定到我用于SignalR(8080)的端口。这很好用了很长一段时间但是从Chrome 58开始,自签名证书需要SAN扩展,这很好。我使用SAN扩展创建了一个新的自签名证书,但现在又出现了一条全新的错误消息:
如果我忽略这一点并继续,它会破坏我的网站SSL,客户会看到一个红色的' x'在网址栏中,不会让网站感到舒适。也得到,"您的连接不是私密的"警告。实际上,它不是我的网站无效,它是绑定到端口的SSL证书。
有没有办法用自签名证书解决这个问题? 我可以将有效的证书绑定到客户端端口并将其用于SignalR吗?
我不介意为有效的证书付钱,但问题是,我甚至可以申请localhost的证书吗?
答案 0 :(得分:1)
就像我们在评论中讨论过的那样,您无法使用来自CA的有效服务器证书,因为将其分发到任何地方(对您的用户)可能是一个严重的安全风险。
因此,您必须使用自签名证书,并适应其所有限制,
随着Chrome和其他网络浏览器的快速变化,很快就会出现新的限制。
您应该为用户提供PowerShell脚本以自动执行这些步骤。这可以最大限度地减少对用户体验的影响。