[1] [[暗号鍵]]を生成する要素 ([[FormControl]]) です。
[[form]] 要素の子孫となります。[[強制空要素]]です。

[43] この[[要素]]は[[非推奨]]とされています。

* 仕様書

[REFS[
- [30] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-15 01:40:28 +09:00]] 版) <https://html.spec.whatwg.org/#the-keygen-element>
]REFS]

* 意味

[37] [CODE(HTMLe)@en[[[keygen]]]] [[要素]]は、[[公開鍵暗号]]方式で用いる[[鍵]]の組を生成することを
[[Webブラウザー]]に求める[[フォーム制御子]]です。

[36] [CODE(HTMLe)@en[[[keygen]]]] [[要素]]を含む[[フォームの提出]]を行うと、
新しい[[公開鍵]]と[[秘密鍵]]の組が生成され、
[[サーバー]]には[[公開鍵]]が、
[[Webブラウザー]]の[[証明書データベース]]には[[秘密鍵]]が保存されます。

[38] [[サーバー]]は、受信した[[公開鍵]]を使って[[TLSクライアント認証]]のための[[クライアント証明書]]を[[発行]]し、
[[証明書ダウンロード]]によって[[Webブラウザー]]の[[証明書データベース]]に登録させることが期待されています。

;; [39] [[CSR]] とは違って[[公開鍵]]しか含まれないので、それだけでは[[証明書]]を発行するのに十分な情報ではないかもしれません。
[[証明書]]の各欄に含める情報は他の[[フォーム制御子]]などから得ることが想定されているようです。

* 歴史

[29] [[NN]]3+, [[Opera]] 3 が対応しています。

[7]
:状態:非標準
:[[局所名]]:[CODE(HTMLe)@en[keygen]] ([Q@en[key generation]]
([Q[鍵生成]]) からか?)
:[[開始タグ]]:必須
:[[終了タグ]]:禁止
:[[内容モデル]]:[CODE(SGML)@en[[[EMPTY]]]]
:出現できる文脈:[[行内要素]]としてか?
:[[属性]]:
,属性名	,属性値	,既定値	,説明	,状態	,出典
,[[challenge]]	,英数字?	,空文字列	,[[誰何]]文字列	,[NN3]
,[[keytype]]	,DSA
,[[name]]	,html-name	,必須	,名前	,[NN3]
,[[pqg]]	,	,	,	,[Moz]


入力欄を提出すると、他の form control 同様に、
([[appication/x-www-form-urlencoded]] なら) [VAR[name]]=[VAR[key]]
形式で送信されます。但し、 [VAR[key]] は鍵を [[Base64]]
符号化したものです。

[[NN]]・[[Mozilla]] の実装では、鍵長を選択する
[[PullDownList]] で表示されます。


- ''Netscape Extensions for User Key Generation'' <http://wp.netscape.com/eng/security/ca-interface.html>
-- [53] [[NN3]]
--
[26] [CITE[Netscape Extensions for User Key Generation]]
([TIME[2015-03-03 23:45:09 +09:00]] 版)
<http://web.archive.org/web/19990129031457/http://www.home.netscape.com/eng/security/ca-interface.html>
--
[28] [CITE[Netscape Extensions for User Key Generation]]
([TIME[2015-04-06 14:30:46 +09:00]] 版)
<http://web.archive.org/web/19970709164001/http://home.netscape.com/eng/security/ca-interface.html>
-
[25] [CITE[Netscape Extensions for User Key Generation]]
([TIME[2015-03-03 23:44:47 +09:00]] 版)
<http://web.archive.org/web/19990129075540/http://www.home.netscape.com/eng/security/comm4-keygen.html>
-- [54] [[NN4]]
- ''HTML Tag Reference'' <http://developer.netscape.com/docs/manuals/htmlguid/tags10.htm#1615503>
--
[33] [CITE[HTML Tag Reference]]
([TIME[2015-04-12 13:20:38 +09:00]] 版)
<http://web.archive.org/web/20010606132221/http://developer.netscape.com/docs/manuals/htmlguid/tags10.htm#1615503>



- [2] ''Netscape Client Certificate Management'' <http://www.pseudonym.org/ssl/ssl_nsclient_certs.html>
- [3] ''実践デジタル認証入門'' <http://cvs.cacanet.org/FIRST/CA/>
- [4] ''Netscape Certificate Server FAQ'' <http://wp.netscape.com/ja/certificate/v1.0/faq/index.html>



[FIG(data)[ [111] [[HTML要素概説]]

:[F[要素名]]:[CODE[keygen]]
:日付:[TIME[1996-06-29]]
:説明:
[TIME[1996]]頃の
[[Netscape Navigator 3.0]]
は、
[CODE[keygen]]
を実装した。
[TIME[1996-06-29]]付ドキュメントで説明されている。
[SRC[>>62]]
その後いくつかの他の[[Webブラウザー]]も実装したが、
[[Internet Explorer]] は実装しなかった。
:出典:
[REFS[

-
[62] 
[DFN[NSKeyGen]]:
[CITE@en[Netscape Extensions for User Key Generation]], 
[DATA(.author)[[[Jeff Weinstein]]]],
[TIME(.published)[1996-06-29]],
[TIME[2024-08-16T12:13:41.000Z]], [TIME[1999-01-29T03:17:46.022Z]] <http://web.archive.org/web/19990129031457/http://www.home.netscape.com/eng/security/ca-interface.html>


]REFS]

]FIG]




[5]
[[Safari]] も実装しています。

[6]
標準化について、 [[Ian Hickson]] は
[Q[[INS[(もう確定している)]] [[Web Forms 2.0]] に入ることは無いが、[[Web Forms 3.0]] に入れる候補として検討することは可能だ]]
と述べています。
([[名無しさん]] [sage] [WEAK[2005-11-20 11:53:29 +00:00]])

[8]
[[Gecko]] では、構文解析時に [CODE(HTMLa)@en[[[_moz-type]]]]
[[属性]]が [CODE(HTML)@en[[[-mozilla-keygen]]]] な
[CODE(HTMLe)@en[[[select]]]] [[要素]]に置き換えられます。
その[[内容]]は [CODE(HTMLe)@en[[[option]]]]
[[要素]] ([[内容]]は[[自然言語]]依存) になります。

([[名無しさん]] [sage] [TIME[2005-11-29 04:15:07 +00:00]])



[FIG(data)[ [55] [[HTML要素概説]]

:[F[要素名]]:[CODE[keygen]]
:日付:[TIME[2005]]
:説明:
[TIME[2005]]頃、
[[Safari]],
[[Opera]],
[[Gecko]]
が実装していた。
[[Gecko]] の[[構文解析器]]は特別な[[属性]]付きの
[CODE[select]]
に読み替えていた。
この頃
[[Ian Hickson]]
は、
[CITE[Web Forms 2.0]]
には追加せず、
将来の仕様に追加する意向を示した。
:出典:[[keygen]]

]FIG]


[9]
[CITE@ja[PRB: HTML タグ Internet Explorer でサポートされていない KEYGEN]] ([TIME[2008-07-11 00:23:32 +09:00]] 版) <http://support.microsoft.com/kb/190282>


[FIG(data)[ [56] [[HTML要素概説]]

:[F[要素名]]:[CODE[keygen]]
:日付:[TIME[2009-04-07]]
:説明:
[TIME[2009-04-07]]、
[CITE[HTML5]]
に
[CODE[keygen]]
が追加された。
:出典:
[REFS[

-
[CITE@en[HTML5 r2960]], 
[DATA(.author)[[[Hixie]]]], 
[TIME(.published)[2009-04-07 12:48:37 +09:00]], [TIME[2024-10-06T12:42:48.000Z]] <https://github.com/whatwg/html/commit/3b0abe669f7f5f266a6f235b3e460cf6f5679fc4>

]REFS]


]FIG]


[10]
[CITE['''['''whatwg''']''' <keygen> element]] ([TIME[2008-07-23 14:39:54 +09:00]] 版) <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2008-July/015300.html>

[11] [CITE[IRC logs: freenode / #whatwg / 20090407]] ([TIME[2009-06-14 10:25:02 +09:00]] 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20090407>

[12] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-08-22 14:39:34 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=2959&to=2960>

[13] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-09-14 22:12:02 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=3842&to=3843>

[14] [CITE[IRC logs: freenode / #whatwg / 20090907]]
([TIME[2009-10-17 22:29:17 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090907#l-654>

[15] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-10-23 23:21:32 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4280&to=4281>

[16] [CITE['''['''whatwg''']''' Headings and sections, role of H2-H6]]
([TIME[2010-05-01 19:55:17 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-April/026130.html>

[17] [CITE@en[<keygen> element (was RE: Implementor feedback on new elements in  HTML5)]]
([[Adrian Bateman]] 著, [TIME[2009-09-02 00:13:41 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-html/2009Sep/0043.html>

[18] [CITE['''['''whatwg''']''' Questions about the keygen element specification]]
([TIME[2010-07-29 07:58:24 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-July/027411.html>

[19] [CITE[IRC logs: freenode / #whatwg / 20140212]]
( ([TIME[2014-02-13 20:32:09 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140212#l-931>

[20] [CITE@en[WebID-TLS]]
( ([TIME[2014-03-01 16:05:08 +09:00]] 版))
<https://dvcs.w3.org/hg/WebID/raw-file/tip/spec/tls-respec.html#h4_certificate-creation>

[21] [CITE@en[Web Applications 1.0 r8560 Add some info about keygen.]]
( ([TIME[2014-04-02 09:05:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8559&to=8560>

[22] [CITE@en-US[NSS Certificate Download Specification | MDN]]
( ([TIME[2014-03-26 06:32:19 +09:00]] 版))
<https://developer.mozilla.org/en-US/docs/NSS_Certificate_Download_Specification>

[REFS[
- [31] [CITE@en['''['''whatwg''']''' <keygen> and X509 client cert mime type]] ([[henry.story@bblfish.net]] 著, [TIME[2014-02-25 23:01:57 +09:00]] 版) <https://lists.w3.org/Archives/Public/public-whatwg-archive/2014Feb/0146.html>
- [32] [CITE@en[Re: '''['''whatwg''']''' <keygen> and X509 client cert mime type]] ([[Ian Hickson]] 著, [TIME[2014-04-02 09:02:51 +09:00]] 版) <https://lists.w3.org/Archives/Public/public-whatwg-archive/2014Apr/0004.html>
-- [23] [CITE[''''''[''''''whatwg'''''']'''''' <keygen> and X509 client cert mime type]]
( ([TIME[2014-04-02 09:02:52 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2014-April/084613.html>
]REFS]

[24] [CITE@en[Switch to HTTPS Now, For Free]]
( ([[Eric Mill]] 著, [TIME[2014-09-14 03:45:06 +09:00]] 版))
<https://konklone.com/post/switch-to-https-now-for-free>



[27] [CITE[Issue 148 - chromium - browser does not send valid certification requests for creating SSL client certificates - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-03-22 00:57:49 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=148>




[FIG(quote)[
[FIGCAPTION[
[34] ([TIME[2015-04-12 13:25:17 +09:00]] 版)
<http://web.archive.org/web/20060929031003/http://www.alw.nih.gov/pki/docs/ns-ca.txt>
]FIGCAPTION]

> The browser uses the public key encoded in the certificate to
> 	associate the certificate with the appropriate private key in
> 	its local key database.  Now, the certificate is "installed".

]FIG]


[35] [CITE[Issue 37142 - chromium - Intermediate certs received along with generated client cert will not be saved - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-04-12 15:36:13 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=37142>

** 廃止

[57] 
[CITE@ja[On the future of <keygen> and application/x-x509-*-cert MIME handling]], [TIME[2024-08-16T12:37:12.000Z]] <https://groups.google.com/g/mozilla.dev.platform/c/pAUG2VQ6xfQ/m/FKX63BwOIwAJ>

[40] [CITE@en[Deprecate <keygen> and appcache · whatwg/html@1b43806]]
([TIME[2015-08-29 01:06:39 +09:00]] 版)
<https://github.com/whatwg/html/commit/1b438067d84da2ee95988842cdd8fe2655444936>

[41] [CITE@en[Deprecate <keygen> · Issue #67 · whatwg/html]]
([TIME[2015-09-01 18:56:24 +09:00]] 版)
<https://github.com/whatwg/html/issues/67>


[59] 
[CITE@ja[(Pre-)Intent to Deprecate: <keygen> element and application/x-x509-*-cert MIME handling]], [TIME[2024-08-16T12:40:41.000Z]] <https://groups.google.com/a/chromium.org/g/blink-dev/c/pX5NbX0Xack>


[FIG(data)[ [51] [[HTML要素概説]]

:[F[要素名]]:[CODE[keygen]]
:日付:[TIME[2015]]
:説明:
[TIME[2015]]、
[[Chrome]]
は
[CODE[keygen]]
の[[廃止]]の意向を表明し、
[[Gecko]]
もそれに賛同した。
設計と[[相互運用性]]に課題が多いことが[[廃止]]の理由とされた。
[TIME[2015-08-28]]、
[CITE[HTML Standard]]
は
[CODE[keygen]]
を[[非推奨]]とした。
[SRC[>>64]]
未実装の
[[Microsoft]] 
を含め過半の主要[[Webブラウザー]]が支持しなくなったことによる。
反発も多かったが意向は覆らなかった。
:出典:[[keygen]]
:出典:
[REFS[

- [64] 
[DFN[HTML:DeprecateKeygen]]:
[CITE@en[Deprecate <keygen> and appcache]], 
[DATA(.author)[[[annevk]]]], 
[TIME(.published)[2015-08-28 23:57:09 +09:00]], [TIME[2024-10-06T12:47:25.000Z]] <https://github.com/whatwg/html/commit/1b438067d84da2ee95988842cdd8fe2655444936>

]REFS]

]FIG]


[42] [CITE@en[Agenda:  <keygen> being destroyed when we need it]]
([[Tim Berners-Lee]] 著, [TIME[2015-09-01 23:08:10 +09:00]] 版)
<https://lists.w3.org/Archives/Public/www-tag/2015Sep/0000.html>

[60] 
[CITE@en[Keygen and Client Certificates]], [TIME[2017-09-28T13:05:26.000Z]], [TIME[2024-08-16T12:44:58.355Z]] <https://w3ctag.github.io/client-certificates/>


[58] 
[CITE@en[<keygen> & "md5WithRSAEncryption" · Issue #102 · whatwg/html · GitHub]], [TIME[2024-08-16T12:39:54.000Z]] <https://github.com/whatwg/html/issues/102>


[44] [CITE@en[13518 – "The keygen element": The only supported signature algorithm is the outdated and insecure md5WithRSAEncryption. The element should at least have an optional signature algorithm, with the option to use the more secure sha1WithRSAEncryption and sha256WithRS]]
([TIME[2015-10-08 11:13:46 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=13518>

[45] [CITE@en[Keygen and Client Certificates]]
([TIME[2015-12-01 07:01:19 +09:00]] 版)
<https://w3ctag.github.io/client-certificates/>

[46] [CITE@en[Remove the concept of CSS Bindings]]
([[annevk]]著, [TIME[2016-07-08 02:00:41 +09:00]])
<https://github.com/whatwg/html/commit/6c96beabfa41d6d28ab23633966b82c5cdb9fd94>

[FIG(quote)[
[FIGCAPTION[
[47] [CITE@en[debian-sso/debian-sso - Git repository for debian-sso]]
([TIME[2016-11-04 15:06:46 +09:00]])
<https://anonscm.debian.org/cgit/debian-sso/debian-sso.git/tree/spkac/templates/spkac/enroll.html>
]FIGCAPTION]

> <p>Enrollment type: <keygen name="key" challenge="{{challenge}}" keytype="rsa"></p>

]FIG]


[48] [CITE@en[Expand on the <keygen> removal and deprecation]]
([[domenic]]著, [TIME[2016-11-24 09:31:45 +09:00]])
<https://github.com/whatwg/html/commit/8a85d1742d9ac9be17f79f8087898147209d354c>

[49] [CITE@en[Add keygen to the list of elements with special parsing rules]]
([[domenic]]著, [TIME[2016-12-30 01:06:53 +09:00]])
<https://github.com/whatwg/html/commit/69be72ebb1872710b68a7e73c9b88e3e80b40722>


[50] [CITE@en[Remove <keygen>]]
([[domenic]]著, [TIME[2017-01-14 07:03:02 +09:00]])
<https://github.com/whatwg/html/commit/5baa38720f6e83c94a50018c4565808ad548d69c>


[52] [CITE@en[API Deprecations and Removals in Chrome 57  |  Web  |  Google Developers]]
([TIME[2017-02-23 00:20:53 +09:00]])
<https://developers.google.com/web/updates/2017/02/chrome-57-deprecations?utm_source=feed&utm_medium=>

[FIG(data)[ [61] [[HTML要素概説]]

:[F[要素名]]:[CODE[keygen]]
:日付:[TIME[2017-01-14]]
:説明:
[TIME[2017-01-14]]、
[CITE[HTML Standard]]
は
[CODE[keygen]]
を廃止した。
[SRC[>>63]]
前後して各[[Webブラウザー]]もこれに従った。
今は[[構文解析器]]や [[DOM]]
に痕跡を留めるのみである。
:出典:[[keygen]]
:出典:
[REFS[

- [63] 
[DFN[HTML:RemoveKeygen]]:
[CITE@en[Remove <keygen>]], 
[DATA(.author)[[[domenic]]]], 
[TIME(.published)[2017-01-14 07:03:02 +09:00]], [TIME[2024-10-06T12:46:43.000Z]] <https://github.com/whatwg/html/commit/5baa38720f6e83c94a50018c4565808ad548d69c>

]REFS]

]FIG]



