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