HTML5 的 <keygen>
元素原本的设计目的是为了辅助网页表单生成公钥-私钥对,以便进行客户端证书的创建。用户在提交表单时,<keygen>
会生成一个新的密钥对。私钥会存储在用户的本地计算机上,而公钥则会与表单数据一起提交到服务器。
具体来说,<keygen>
的作用是:
- 生成密钥对: 它会在浏览器中生成一个公钥和私钥对。
- 提交公钥: 当包含
<keygen>
的表单被提交时,生成的公钥会被包含在提交的数据中发送到服务器。 - 本地存储私钥: 私钥则会存储在用户的本地证书存储中,通常由浏览器管理。
属性:
autofocus
: 指定该元素在页面加载后自动获得焦点。challenge
: 一个字符串值,与公钥一起提交到服务器,用于服务器端的验证或其他用途。disabled
: 禁用该元素。form
: 指定<keygen>
元素所属的表单,即使它不在该表单的子元素中。keytype
: 指定密钥对的类型,例如RSA
。name
: 指定提交公钥时使用的名称。
示例:
<form action="/submit_form" method="post">
<label for="name">Your Name:</label>
<input type="text" id="name" name="name"><br><br>
<keygen name="security" challenge="random_string">
<input type="submit" value="Submit">
</form>
重要说明:
尽管 <keygen>
元素曾被寄予厚望,但由于浏览器支持不一致以及安全性方面的担忧,它最终被弃用,并且不再被任何现代浏览器支持。 W3C 已正式从 HTML 标准中移除 <keygen>
元素。
替代方案:
现在,更推荐使用 JavaScript 和服务器端技术来生成和管理密钥对,例如 Web Crypto API。 这提供了更灵活、更安全且跨浏览器兼容的解决方案。 对于客户端证书的生成和管理,通常会涉及到更复杂的流程和专门的库。
标签:公钥,浏览器,标签,元素,表单,HTML5,提交,私钥,keygen From: https://www.cnblogs.com/ai888/p/18569646