【问题标题】:How to enable crypto.subtle for unsecure origins in Chrome?如何在 Chrome 中为不安全的来源启用 crypto.subtle?
【发布时间】:2017-10-10 15:29:14
【问题描述】:

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

【问题讨论】:

    标签: google-chrome chromium webcrypto-api


    【解决方案1】:

    在 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, *)

    • (文件, *, —)

    • (chrome-extension, *, —)

    所以你应该可以在http://localhost上使用Web Cryptographi Api。

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

    【讨论】:

    • 实际上我们甚至不能使用 localhost 出于其他原因(不记得为什么),但是 127.0.0.1 解决了这个问题并且与 localhost 相同(?)所以解决了。跨度>
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 2019-06-21
      • 1970-01-01
      • 2021-05-14
      • 2021-09-10
      • 2017-04-02
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多