HTML参考手册
废弃 | Obsolete
keygen
已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。
HTML <keygen> 元素是为了方便生成密钥材料和提交作为HTML form 的一部分的公钥.这种机制被用于设计基于 Web 的证书管理系统。按照预想,<keygen> 元素将用于 HTML 表单与其他的所需信息一起构造一个证书请求,该处理的结果将是一个带有签名的证书。
Web浏览器制造商目前正在讨论是否保留这个功能。在达成决定之前,最好继续将此功能视为已弃用或消失。
| 内容类别 | 流量内容,措辞内容,互动内容,列出,可引用,可提交,可重置的表格相关元素,可触及的内容。 | 
|---|---|
| 允许的内容 | 没有,这是一个空的元素。 | 
| 标记遗漏 | 必须有开始标签,并且不得有结束标签。 | 
| 允许父母 | 任何接受短语内容的元素。 | 
| 允许ARIA角色 | 没有 | 
| DOM界面 | HTMLKeygenElement | 
属性
这个元素包含全局属性。
autofocus这个布尔属性可以让你指定当页面加载时控件应该有输入焦点,除非用户覆盖它,例如通过输入不同的控件。文档中只有一个表单元素可以具有autofocus属性,这是一个布尔值。
challenge与公钥一起提交的质询字符串。如果未指定,则缺省为空字符串。disabled此布尔属性指示表单控件不可用于交互。
form该元素与其关联的表单元素(其表单所有者)。属性的值必须是同一个文档中id的一个<form>元素的值。如果未指定此属性,则此元素必须是元素的后代<form>。这个属性可以让你放置<keygen>元素中任何位置的元素,而不仅仅是它们的表单元素的后代。
keytype生成的密钥的类型。默认值是RSA。
name与表单数据一起提交的控件的名称。
元素写成如下:
<keygen name="name" challenge="challenge string" keytype="type" keyparams="pqg-params">keytype参数用于指定要生成哪种类型的密钥。有效值是“ RSA”,这是默认值,“ DSA”和“ EC”。将name和challenge属性都需要在所有情况下。该keytype属性对于RSA密钥生成是可选的,并且对于生成DSA和EC密钥是必需的。
keyparams属性是DSA和EC密钥生成所必需的,在生成RSA密钥时将被忽略。PQG是一个同义词keyparams。也就是说,你可以指定keyparams="pqg-params"或pqg="pqg-params"。
对于RSA密钥,keyparams不使用该参数(如果存在则忽略)。用户可以被给予RSA关键优势的选择。目前,用户被给予“高”强度(2048比特)和“中等”强度(1024比特)之间的选择。
对于DSA密钥,keyparams参数指定将在keygen过程中使用的DSA PQG参数。pqg参数的值是IETF RFC 3279中规定的BASE64编码的DER编码的Dss-Parms 。用户可以选择DSA密钥大小,允许用户选择DSA标准中定义的大小之一。
对于EC密钥,keyparams参数指定将在其上生成密钥的椭圆曲线的名称。它通常是nsKeygenHandler.cpp中的表中的一个字符串。(请注意,在任何特定的浏览器中,只有名为的曲线的子集可能实际上受支持。)如果keyparams参数字符串不是可识别的曲线名称字符串,则根据用户选择的关键强度(低,中,高),使用名为“ secp384r1” 的曲线为高,曲线名为“ secp256r1”为中等键。(注意:关键强度数量的选择,每个强度的默认值,以及用户提供选择的UI都超出了本规范的范围。)
<keygen>元素仅在HTML表单中有效。这将导致某种选择被呈现给用户以选择密钥大小。用于选择的UI可以是菜单,单选按钮或可能的其他东西。浏览器提供了几个可能的关键优势。目前,有两个优势,高和中。如果用户的浏览器被配置为支持加密硬件(例如“智能卡”),则用户也可以选择在何处生成密钥,即在智能卡中或软件中并存储在磁盘上。
当按下提交按钮时,会生成所选尺寸的密钥对。私钥被加密并存储在本地密钥数据库中。
   PublicKeyAndChallenge ::= SEQUENCE {
       spki SubjectPublicKeyInfo,
       challenge IA5STRING
   }
   SignedPublicKeyAndChallenge ::= SEQUENCE {
       publicKeyAndChallenge PublicKeyAndChallenge,
       signatureAlgorithm AlgorithmIdentifier,
       signature BIT STRING
   }公钥和挑战字符串是DER编码的PublicKeyAndChallenge,然后用私钥进行数字签名产生一个SignedPublicKeyAndChallenge。SignedPublicKeyAndChallenge是Base64编码,该ASCII数据最终提交到服务器作为一种形式的名称/值对的值,其中由指定的名称是名称name的属性keygen元素。如果没有提供挑战字符串,那么它将被编码为IA5STRING长度为零的字符串。
下面是一个表单提交的示例,它将通过HTTP服务器传递给CGI程序:
   commonname=John+Doe&email=doe@foo.com&org=Foobar+Computing+Corp.&
   orgunit=Bureau+of+Bureaucracy&locality=Anytown&state=California&country=US&
   key=MIHFMHEwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAnX0TILJrOMUue%2BPtwBRE6XfV%0AWtKQbsshxk5ZhcUwcwyvcnIq9b82QhJdoACdD34rqfCAIND46fXKQUnb0mvKzQID%0AAQABFhFNb3ppbGxhSXNNeUZyaWVuZDANBgkqhkiG9w0BAQQFAANBAAKv2Eex2n%2FS%0Ar%2F7iJNroWlSzSMtTiQTEB%2BADWHGj9u1xrUrOilq%2Fo2cuQxIfZcNZkYAkWP4DubqW%0Ai0%2F%2FrgBvmco%3D示例
- 带有RSA KEYGEN元素的示例表单
- 带有DSA KEYGEN元素和PQG参数的样品表格
- 带有DSA KEYGEN元素但没有PQG参数的示例表单
- 带有EC KEYGEN元素的示例表单
规范
| 规范 | 状态 | 评论 | 
|---|---|---|
| HTML生活标准该规范中'<keygen>'的定义。 | 生活水平 |  | 
| HTML5该规范中'<keygen>'的定义。 | 建议 |  | 
浏览器兼容性
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | 
|---|---|---|---|---|---|---|
| Basic Support | (Yes) — 57 | (Yes) | 1 | No | 3.0 | 1.2 | 
| Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari | 
|---|---|---|---|---|---|---|---|
| Basic Support | (Yes) — 57 | (Yes) — 57 | (Yes) | 1 | No | ? | No | 
废弃 | Obsolete相关
 
                                超文本标记语言,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。
 
         加载中,请稍侯......
 加载中,请稍侯......