Chrome 58 自签名证书

Chrome 58 Self Signed Certificate

我现在走到了尽头,看不到任何解决方案。只是一些背景知识,我有一个 .net Web 应用程序,我还有一个自托管的 SignalR 端应用程序,客户可以下载该应用程序以帮助我的网站与他们的桌面交互。当客户端安装此端应用程序时,它会采用自签名证书并安装到受信任的根证书颁发机构和个人证书存储区。

我的网站使用 SSL 和授权机构签署的有效证书,因此它是 运行 通过 https 并且客户在 URL 栏中看到一个漂亮的绿色锁,这让每个人在应用程序中都感到安全。为了让 SignalR 客户端在 JS 中工作,我必须使用 https (https://localhost:8080/signalr/.../) 进行调用。现在,为了解决这个问题,我创建了一个自签名证书并绑定到我用于 SignalR (8080) 的端口。这在很长一段时间内都运行良好,但截至 Chrome 58 个自签名证书需要 SAN 扩展,这很好。我使用 SAN 扩展创建了一个新的自签名证书,但现在出现了一条全新的错误消息:

如果我只是忽略它并继续,它会破坏我的网站 SSL,并且客户会在 URL 栏中看到一个红色的 'x',这不会让他们在网站上感到舒服。还收到 "Your connection is Not Private" 警告。实际上,失效的不是我的站点,而是端口绑定的SSL证书。

有什么方法可以用自签名证书解决这个问题吗? 我可以只将我拥有的有效证书绑定到客户端端口并将其用于 SignalR 吗?

我不介意为有效证书付费,但问题是,我什至可以为 localhost 申请证书吗?

就像我们在上面的评论中讨论的那样,您使用来自 CA 的有效服务器证书是不可行的,因为将它分发到任何地方(给您的用户)可能是一个严重的安全风险。

因此,您将不得不使用自签名证书,并适应其所有限制,

  • 现在必须使用 SHA-2 哈希生成证书。
  • 证书必须具有正确的 SAN 扩展名。
  • 必须将证书添加到受信任的根授权存储区。

As Chrome and other web browsers are changing rapidly, new limitations might be added soon.

您可能应该为您的用户提供一个 PowerShell 脚本来自动执行这些步骤。这样可以最大程度地减少对用户体验的影响。