【发布时间】:2017-12-13 18:42:04
【问题描述】:
我现在走到了尽头,看不到任何解决方案。只是一些背景知识,我有一个 .net Web 应用程序,我还有一个自托管的 SignalR 端应用程序,客户可以下载它来帮助我的站点与他们的桌面交互。当客户端安装此端应用程序时,它需要一个自签名证书并安装到受信任的根证书颁发机构和个人证书存储区。
我的网站使用 SSL 和由权威机构签署的有效证书,因此它通过 https 运行,客户端在 URL 栏中看到一个漂亮的绿色锁,让每个人都在应用程序中感到安全。为了让 SignalR 客户端在 JS 中工作,我必须使用 https (https://localhost:8080/signalr/.../) 调用。现在,为了解决这个问题,我创建了一个自签名证书并绑定到我用于 SignalR (8080) 的端口。这在很长一段时间内都可以正常工作,但从 Chrome 58 开始,自签名证书需要 SAN 扩展,这很好。我使用 SAN 扩展创建了一个新的自签名证书,但现在出现了一个全新的错误消息:
如果我忽略这一点并继续,它会破坏我的网站 SSL,并且客户会在 URL 栏中看到一个红色的“x”,这会让他们在网站上感到不舒服。还会收到“您的连接不是私人的”警告。实际上,无效的不是我的网站,而是绑定到端口的 SSL 证书。
有没有办法用自签名证书解决这个问题? 我可以将我拥有的有效证书绑定到客户端端口并将其用于 SignalR 吗?
我不介意为有效证书付费,但问题是,我什至可以为 localhost 申请证书吗?
【问题讨论】:
-
@LexLi 以及如果解析为 127.0.0.1,Lets Encrypt 将如何为该域颁发证书?
-
@Evk 只是注意到让我们加密验证 IP 地址的有效性。那么就没有使用“有效”证书的简单方法了。就算这家伙想付钱,到处发一个有效的证书也是对他/她自己的攻击。
-
@LexLi 我很欣赏所提供的教育,如果你能把它放在一个答案中,我会给你功劳......它需要我添加一个 url 预订,但根本不是一个大问题,谢谢大佬
标签: c# google-chrome ssl signalr self-signed