在Chrome 60中,他们添加了功能,可禁用非{TLS}连接crypto.subtle
。出于安全原因,我们的产品需要运行本地服务器并将一些安全的远程连接转发到localhost
。由于localhost
在技术上不是命名域,因此我们无法使用TLS - 有效地使crypto.subtle
在Chrome(以及基于铬的浏览器,如Opera)中无法使用,并迫使我们使用不太安全的垫片 asmCrypto.js 。有没有办法告诉Chrome通过标头启用crypto.subtle
?有没有办法在我们可以告诉用户的设置中禁用新的功能(最糟糕的情况)?
答案 0 :(得分:2)
在Chrome 60中,他们添加了一项功能,可禁用非TLS连接的crypto.subtle
不完全是,自第一个支持的版本(chrome 32?)
以来,对于非安全来源,crypto.subtle
被禁用
但localhost
被视为安全来源https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
“安全起源”是至少与以下(方案,主机,端口)模式之一匹配的起源:
(https,*,*)
(wss,*,*)
(*,localhost,*)
(*,127/8,*)
(*,:: 1/128,*)
(档案,*, - )
(chrome-extension,*, - )
所以你应该能够使用Web Cryptographi Api http://localhost
。
您是否在自己的网站上使用HTTPS?可能是您遇到了与混合HTTPS和HTTP相关的问题。 Chrome将阻止与localhost的HTTP连接。然后,您可以为127.0.0.1生成自签名证书,并使用HTTPS启动本地服务器(类似于@SLaks答案,但您不需要hosts
条目)
答案 1 :(得分:0)
您应该创建一个CNAME或hosts
条目,指向127.0.0.1
的有效域,然后获取该域的(可能是自签名的)证书。