HTML 已弃用的客户端证书 <keygen> 的替代方案?
在铬论坛的这篇文章中,提到了替代品
在浏览器空间中,存在替代方案,例如:
- 如果是企业用例,请使用设备的本机管理功能。在 Windows 上,这是组策略。在 iOS/Android 上,这是移动设备管理套件。在 OS X 上,这是企业设置。在 ChromeOS 上,有 chrome.enterprise.platformKeys [11] 用于企业管理的扩展。
- 使用 WebCrypto 实现证书注册,然后以适合平台的格式(例如 PKCS#7)交付证书和(导出的)私钥,并允许本机 OS UI 引导用户安装证书和密钥。
许多浏览器都支持 WebCrypto:[链接]
您可以使用 openpgp.js 和其他解决方案。[openpgp.js]
这里有一些例子。
您还可以生成 CSR:https ://www.w3.org/community/webcryptoapi/draft/#generatecertrequest-method
一些用于生成 CSR 的库:https ://pkijs.org/
这是一个使用 PKIjs 生成自签名 X509 证书 + 密钥对的示例:
https://github.com/infotechinc/create-x509-certificate
该generateKey()
函数创建密钥对。
https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#SubtleCrypto-method-generateKey
正如WebCrypto API 规范所确认的,WebCrypto API目前不是 keygen 标签的替代品:
该 API 虽然允许应用程序生成、检索和操作密钥材料,但并未专门解决在特定类型的密钥存储(例如安全元件或智能卡)中提供密钥的问题。这是因为这样的供应操作通常负担着供应商特定的细节,这使得定义与供应商无关的接口成为一项不合适的无限任务。此外,此 API 不处理或解决密码模块的发现,因为这些概念依赖于底层用户代理,并且不是在常见操作系统、密码库和实现之间可移植的概念。
如果您已经有了<keygen>
基于 - 的设置并想继续使用它,我创建了一个项目,该项目尝试为以下内容实现 JavaScript polyfill <keygen>
:
此时(2017 年 4 月)我必须创建一个原生应用程序。只有 FireFox 可以使用 keygen 标签,而且,无论您发现什么 javascript 库,您都无法将证书导入 Windows,因此可以从 Chrome 中使用它。