Chrome 58 自签名证书
Posted
技术标签:
【中文标题】Chrome 58 自签名证书【英文标题】:Chrome 58 Self Signed Certificate 【发布时间】: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 预订,但根本不是一个大问题,谢谢大佬 【参考方案1】:就像我们上面在 cmets 中讨论的那样,您无法使用来自 CA 的有效服务器证书,因为将其分发到任何地方(给您的用户)可能会带来严重的安全风险。
因此,您将不得不使用自签名证书,并适应其所有限制,
现在必须使用 SHA-2 哈希生成证书。 证书必须具有正确的 SAN 扩展。 证书必须添加到 Trusted Root Authorities 存储区。随着 Chrome 和其他网络浏览器的快速变化,可能很快就会增加新的限制。
您可能应该为您的用户提供一个 PowerShell 脚本来自动执行这些步骤。这样可以最大限度地减少对用户体验的影响。
【讨论】:
以上是关于Chrome 58 自签名证书的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Linux Chrome 和 Firefox 上信任自签名 localhost 证书
MacOS 上的 Chrome 停止信任自签名 CA 颁发的证书