directory search
Attributes accesskey (attribute) class (attribute) contenteditable (attribute) contextmenu (attribute) data-* (attribute) dir (attribute) draggable (attribute) dropzone (attribute) Global attributes hidden (attribute) id (attribute) itemid (attribute) itemprop (attribute) itemref (attribute) itemscope (attribute) itemtype (attribute) lang (attribute) slot (attribute) spellcheck (attribute) style (attribute) tabindex (attribute) title (attribute) translate (attribute) Elements a abbr address area article aside audio b base bdi bdo blockquote body br button canvas caption cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 head header hr html i iframe img input input type="button" input type="checkbox" input type="color" input type="date" input type="datetime"-local input type="email" input type="file" input type="hidden" input type="image" input type="month" input type="number" input type="password" input type="radio" input type="range" input type="reset" input type="search" input type="submit" input type="tel" input type="text" input type="time" input type="url" input type="week" ins kbd label legend li link main map mark menu menuitem meta meter nav noscript object ol optgroup option output p param picture pre progress q rp rt rtc ruby s samp script section select slot small source span strong style sub summary sup table tbody td template textarea tfoot th thead time title tr track u ul var video wbr Miscellaneous Attributes Block-level elements CORS enabled image CORS settings attributes Element Inline elements Kinds of HTML content Link types Microdata Optimizing your pages for speculative parsing Preloading content Reference Supported media formats Using the application cache Obsolete acronym applet basefont big blink center command content dir element font frame frameset hgroup image input type="datetime" isindex keygen listing marquee nextid noframes plaintext strike tt xmp
characters

已废弃

该特性已经从 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”。将namechallenge属性都需要在所有情况下。该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,然后用私钥进行数字签名产生一个SignedPublicKeyAndChallengeSignedPublicKeyAndChallengeBase64编码,该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

Previous article: Next article: