8

在 Chrome 60 中,他们添加了一项禁用非 TLS 连接的功能。出于安全原因,crypto.subtle我们的产品需要运行本地服务器并转发一些安全的远程连接。localhost因为localhost它在技术上不是一个命名域,所以我们不能使用 TLS——实际上导致crypto.subtle在 Chrome(以及像 Opera 这样的基于 chromium 的浏览器)中无法使用,并迫使我们使用像asmCrypto.js这样的安全性较低的 shim 。有没有办法告诉 Chromecrypto.subtle通过标题启用?有什么方法可以在我们可以告诉用户的设置中禁用新功能(最坏的情况)?

4

2 回答 2

13

在 Chrome 60 中,他们添加了一项禁用非 TLS 连接的 crypto.subtle 的功能

不完全crypto.subtle是,自第一个支持的版本(chrome 32?)以来对非安全来源禁用

localhost被认为是安全来源https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features

“安全源”是至少匹配以下(方案、主机、端口)模式之一的源:

  • (https, *, *)

  • (wss, *, *)

  • (*, 本地主机, *)

  • (*, 127/8, *)

  • (*, ::1/128, *)

  • (文件, *, -)

  • (铬扩展,*,-)

所以你应该可以在 http://localhost.

您是否为您的网站使用 HTTPS?可能是您遇到了与混合 HTTPS 和 HTTP 有关的问题。Chrome 将阻止与本地主机的 HTTP 连接。然后您可以为 127.0.0.1 生成一个自签名证书并使用 HTTPS 启动您的本地服务器(类似于@SLaks 答案,但您不需要hosts条目)

于 2017-10-10T16:31:51.247 回答
2

您应该创建一个hosts指向有效域的 CNAME 或条目127.0.0.1,然后获取该域的(可能是自签名的)证书。

于 2017-10-10T15:31:05.540 回答