【问题标题】:Web Crypto API without ssl没有 ssl 的 Web 加密 API
【发布时间】:2020-04-18 13:25:47
【问题描述】:

我写了一个用于安全消息传输的小 Web 应用程序以了解有关加密的更多信息,并想将它展示给我的朋友并让他们玩一下,所以我将它托管在我的小服务器上,并震惊地发现Web Crypto API(我拼命工作,因为它的错误消息不是很具体)需要 SSL(有点违背在浏览器中实现自己的加密方案的目的)!

我已经在该服务器上使用 SSL 运行了另一个 API,但我不想合并它们,而是想问:有没有办法绕过 Web Crypto API 的安全套接字要求,或者是否有另一个库可以让我在不安全的环境中使用相同或相似的功能?

【问题讨论】:

  • Webcrypto 是一个浏览器 API。它以何种方式需要 SSL,或者就此而言甚至是网络连接?
  • @James Reinstate Monica Polk 从技术上讲,您是对的,但该站点需要在大多数浏览器(最常用的浏览器)的安全上下文中提供服务,以允许使用 API。这是本地主机,这是我测试它的方式,或者是 SSL。由于我将它推送到我的服务器上供所有人使用(和我的朋友一起玩),因此在这个意义上它确实需要 SSL

标签: javascript ssl cryptography webcrypto-api secure-context


【解决方案1】:

WebCrypto API 规范 (https://www.w3.org/TR/WebCryptoAPI/) 不限于 SSL,但浏览器实现需要“安全来源”

例如,Chrome 需要 httpswsslocalhost 或扩展程序。见https://stackoverflow.com/a/46671627/6371459

您需要设置 SSL 连接才能使用 webcrypto。如果您想使用其他库(forge、pki.js 等),则不会有此限制,但建议在使用加密时使用 SSL/TLS。

【讨论】:

  • PKIjs,上面列出的,否则很好的答案,没有实现加密,因此与它所构建的 WebCrypto 具有相同的来源限制。
  • 我还要补充一点,在浏览器上下文中使用加密而不验证应用程序的来源并保护站点到客户端的传输是徒劳的。这不是网络加密限制,而是网络安全模型之一。
  • @pedrofb 你能告诉我如何使用 forge 库来实现 window.crypto.subtle.importKey 的功能。因为我没有 https 连接
  • @SatyaDevYadav,查看“privateKeyFromPem”github.com/digitalbazaar/forge#pkcs8 的文档。如果您有具体疑问,请发布新问题
  • @pedrofb 先生,我发布了一个新问题,您能否检查并指导我。这是链接stackoverflow.com/questions/68479744/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
相关资源
最近更新 更多