如何为 Chrome 中的不安全来源启用 crypto.subtle?
How to enable crypto.subtle for unsecure origins in Chrome?
在 Chrome 60 中,他们添加了一个 功能 禁用 non-TLS 连接的 crypto.subtle
。出于安全原因,我们的产品需要 运行 本地服务器并将一些安全的远程连接转发到 localhost
。因为 localhost
在技术上不是命名域,我们不能使用 TLS——有效地使 crypto.subtle
在 Chrome(和 chromium-based 浏览器如 Opera)中不可用,并迫使我们使用安全性较低的垫片,例如 asmCrypto.js。有没有办法告诉 Chrome 通过 headers 启用 crypto.subtle
?有什么方法可以在我们可以告诉用户的设置中禁用新的功能(最坏的情况)?
您应该创建一个 CNAME 或 hosts
条目,将有效域指向 127.0.0.1
,然后为该域获取(可能是自签名的)证书。
In Chrome 60, they added a feature that disables crypto.subtle for non-TLS connections
不完全是,自第一个受支持的版本(chrome 32?)
以来,crypto.subtle
已针对非安全来源禁用
但是 localhost
被认为是安全来源 https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
“Secure origins” are origins that match at least one of the following (scheme, host, port) patterns:
(https, *, *)
(wss, *, *)
(*, localhost, *)
(*, 127/8, *)
(*, ::1/128, *)
(file, *, —)
(chrome-extension, *, —)
所以你应该可以在 http://localhost
.
上使用Web Cryptographi Api
您的网站是否使用 HTTPS?可能是您遇到了混合使用 HTTPS 和 HTTP 的问题。 Chrome 将阻止与本地主机的 HTTP 连接。然后您可以为 127.0.0.1 生成一个自签名证书并使用 HTTPS 启动您的本地服务器(类似于@SLaks 的回答,但您不需要 hosts
条目)
在 Chrome 60 中,他们添加了一个 功能 禁用 non-TLS 连接的 crypto.subtle
。出于安全原因,我们的产品需要 运行 本地服务器并将一些安全的远程连接转发到 localhost
。因为 localhost
在技术上不是命名域,我们不能使用 TLS——有效地使 crypto.subtle
在 Chrome(和 chromium-based 浏览器如 Opera)中不可用,并迫使我们使用安全性较低的垫片,例如 asmCrypto.js。有没有办法告诉 Chrome 通过 headers 启用 crypto.subtle
?有什么方法可以在我们可以告诉用户的设置中禁用新的功能(最坏的情况)?
您应该创建一个 CNAME 或 hosts
条目,将有效域指向 127.0.0.1
,然后为该域获取(可能是自签名的)证书。
In Chrome 60, they added a feature that disables crypto.subtle for non-TLS connections
不完全是,自第一个受支持的版本(chrome 32?)
以来,crypto.subtle
已针对非安全来源禁用
但是 localhost
被认为是安全来源 https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
“Secure origins” are origins that match at least one of the following (scheme, host, port) patterns:
(https, *, *)
(wss, *, *)
(*, localhost, *)
(*, 127/8, *)
(*, ::1/128, *)
(file, *, —)
(chrome-extension, *, —)
所以你应该可以在 http://localhost
.
您的网站是否使用 HTTPS?可能是您遇到了混合使用 HTTPS 和 HTTP 的问题。 Chrome 将阻止与本地主机的 HTTP 连接。然后您可以为 127.0.0.1 生成一个自签名证书并使用 HTTPS 启动您的本地服务器(类似于@SLaks 的回答,但您不需要 hosts
条目)