?
This document uses PHP Chinese website manual Release
已廢棄
該特性已經(jīng)從 Web 標(biāo)準(zhǔn)中刪除,雖然一些瀏覽器目前仍然支持它,但也許會在未來的某個時(shí)間停止支持,請盡量不要使用該特性。
HTML <keygen>
元素是為了方便生成密鑰材料和提交作為HTML form 的一部分的公鑰.這種機(jī)制被用于設(shè)計(jì)基于 Web 的證書管理系統(tǒng)。按照預(yù)想,<keygen>
元素將用于 HTML 表單與其他的所需信息一起構(gòu)造一個證書請求,該處理的結(jié)果將是一個帶有簽名的證書。
Web瀏覽器制造商目前正在討論是否保留這個功能。在達(dá)成決定之前,最好繼續(xù)將此功能視為已棄用或消失。
內(nèi)容類別 | 流量內(nèi)容,措辭內(nèi)容,互動內(nèi)容,列出,可引用,可提交,可重置的表格相關(guān)元素,可觸及的內(nèi)容。 |
---|---|
允許的內(nèi)容 | 沒有,這是一個空的元素。 |
標(biāo)記遺漏 | 必須有開始標(biāo)簽,并且不得有結(jié)束標(biāo)簽。 |
允許父母 | 任何接受短語內(nèi)容的元素。 |
允許ARIA角色 | 沒有 |
DOM界面 | HTMLKeygenElement |
這個元素包含全局屬性。
autofocus
這個布爾屬性可以讓你指定當(dāng)頁面加載時(shí)控件應(yīng)該有輸入焦點(diǎn),除非用戶覆蓋它,例如通過輸入不同的控件。文檔中只有一個表單元素可以具有autofocus
屬性,這是一個布爾值。
challenge
與公鑰一起提交的質(zhì)詢字符串。如果未指定,則缺省為空字符串。disabled
此布爾屬性指示表單控件不可用于交互。
form
該元素與其關(guān)聯(lián)的表單元素(其表單所有者)。屬性的值必須是同一個文檔中id
的一個<form>
元素的值。如果未指定此屬性,則此元素必須是元素的后代<form>
。這個屬性可以讓你放置<keygen>
元素中任何位置的元素,而不僅僅是它們的表單元素的后代。
keytype
生成的密鑰的類型。默認(rèn)值是RSA
。
name
與表單數(shù)據(jù)一起提交的控件的名稱。
元素寫成如下:
<keygen name="name" challenge="challenge string" keytype="type" keyparams="pqg-params">
keytype
參數(shù)用于指定要生成哪種類型的密鑰。有效值是“ RSA
”,這是默認(rèn)值,“ DSA
”和“ EC
”。將name
和challenge
屬性都需要在所有情況下。該keytype
屬性對于RSA密鑰生成是可選的,并且對于生成DSA和EC密鑰是必需的。
keyparams
屬性是DSA和EC密鑰生成所必需的,在生成RSA密鑰時(shí)將被忽略。PQG
是一個同義詞keyparams
。也就是說,你可以指定keyparams="pqg-params"
或pqg="pqg-params"
。
對于RSA密鑰,keyparams
不使用該參數(shù)(如果存在則忽略)。用戶可以被給予RSA關(guān)鍵優(yōu)勢的選擇。目前,用戶被給予“高”強(qiáng)度(2048比特)和“中等”強(qiáng)度(1024比特)之間的選擇。
對于DSA密鑰,keyparams
參數(shù)指定將在keygen過程中使用的DSA PQG參數(shù)。pqg
參數(shù)的值是IETF RFC 3279中規(guī)定的BASE64編碼的DER編碼的Dss-Parms 。用戶可以選擇DSA密鑰大小,允許用戶選擇DSA標(biāo)準(zhǔn)中定義的大小之一。
對于EC密鑰,keyparams
參數(shù)指定將在其上生成密鑰的橢圓曲線的名稱。它通常是nsKeygenHandler.cpp中的表中的一個字符串。(請注意,在任何特定的瀏覽器中,只有名為的曲線的子集可能實(shí)際上受支持。)如果keyparams
參數(shù)字符串不是可識別的曲線名稱字符串,則根據(jù)用戶選擇的關(guān)鍵強(qiáng)度(低,中,高),使用名為“ secp384r1
” 的曲線為高,曲線名為“ secp256r1
”為中等鍵。(注意:關(guān)鍵強(qiáng)度數(shù)量的選擇,每個強(qiáng)度的默認(rèn)值,以及用戶提供選擇的UI都超出了本規(guī)范的范圍。)
<keygen>
元素僅在HTML表單中有效。這將導(dǎo)致某種選擇被呈現(xiàn)給用戶以選擇密鑰大小。用于選擇的UI可以是菜單,單選按鈕或可能的其他東西。瀏覽器提供了幾個可能的關(guān)鍵優(yōu)勢。目前,有兩個優(yōu)勢,高和中。如果用戶的瀏覽器被配置為支持加密硬件(例如“智能卡”),則用戶也可以選擇在何處生成密鑰,即在智能卡中或軟件中并存儲在磁盤上。
當(dāng)按下提交按鈕時(shí),會生成所選尺寸的密鑰對。私鑰被加密并存儲在本地密鑰數(shù)據(jù)庫中。
PublicKeyAndChallenge ::= SEQUENCE { spki SubjectPublicKeyInfo, challenge IA5STRING } SignedPublicKeyAndChallenge ::= SEQUENCE { publicKeyAndChallenge PublicKeyAndChallenge, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING }
公鑰和挑戰(zhàn)字符串是DER編碼的PublicKeyAndChallenge
,然后用私鑰進(jìn)行數(shù)字簽名產(chǎn)生一個SignedPublicKeyAndChallenge
。SignedPublicKeyAndChallenge
是Base64編碼,該ASCII數(shù)據(jù)最終提交到服務(wù)器作為一種形式的名稱/值對的值,其中由指定的名稱是名稱name
的屬性keygen
元素。如果沒有提供挑戰(zhàn)字符串,那么它將被編碼為IA5STRING
長度為零的字符串。
下面是一個表單提交的示例,它將通過HTTP服務(wù)器傳遞給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參數(shù)的樣品表格
帶有DSA KEYGEN元素但沒有PQG參數(shù)的示例表單
帶有EC KEYGEN元素的示例表單
規(guī)范 | 狀態(tài) | 評論 |
---|---|---|
HTML生活標(biāo)準(zhǔn)該規(guī)范中'<keygen>'的定義。 | 生活水平 | |
HTML5該規(guī)范中'<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 |