如何在Chrome中为unsecure origin启用crypto.subtle?

时间:2017-10-10 15:29:15

标签: google-chrome chromium webcryptoapi

在Chrome 60中,他们添加了功能,可禁用非{TLS}连接crypto.subtle。出于安全原因,我们的产品需要运行本地服务器并将一些安全的远程连接转发到localhost。由于localhost在技术上不是命名域,因此我们无法使用TLS - 有效地使crypto.subtle在Chrome(以及基于铬的浏览器,如Opera)中无法使用,并迫使我们使用不太安全的垫片 asmCrypto.js 。有没有办法告诉Chrome通过标头启用crypto.subtle?有没有办法在我们可以告诉用户的设置中禁用新的功能(最糟糕的情况)?

2 个答案:

答案 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的有效域,然后获取该域的(可能是自签名的)证书。