web-dev-qa-db-ja.com

HTML5のKeygenタグ

それで、HTML5でこの新しいタグに出会いました、<keygen>。私はそれが何のためにあるのか、どのように適用されるのか、そしてそれがどのようにブラウザの動作に影響を与える可能性があるのか​​を理解することはできません。

このタグはフォームの暗号化用であることを理解していますが、<keygen>およびドメインのSSL証明書を持っている。また、challenge属性とは何ですか?

許容範囲のブラウザーで実装されるにはほど遠いため、使用する予定はありませんが、このタグが正確に何をするかについては興味があります。私が見つけることができるのは、実際の使用例のない曖昧なcookie-cutter文書です。


編集:

非常に有益なドキュメント here を見つけました。これは、keygenタグのクライアント側とサーバー側の両方の実装を介して実行されます。

ドメインSSL証明書と比較した場合のこの利点については、まだ興味があります。

75
Craige

SSLは、「サーバーID」または「サーバーANDクライアント認証(相互認証)」に関するものです。

ほとんどの場合、サーバーのみがSSLハンドシェイク中にサーバー証明書を提示するため、これが実際に接続するサーバーであることを確認できます。場合によっては、サーバーはyoが実際にあなたのふりをしていることを確認したいこともあります。このためには、クライアント証明書が必要です。

<keygen>タグは、公開鍵と秘密鍵のペアを生成し、証明書要求を作成します。この証明書要求は、認証局(CA)に送信されます。 CAは証明書を作成し、ブラウザーに送り返します。これで、この証明書をユーザー認証に使用できます。

32
duddex

いくつかの履歴がありません。 keygenは、Netscapeがまだ関連ブラウザであるときに初めてサポートされました。 IE、OTOHは、ActiveX APIを介して同じユースケースをサポートしていました。 Opera and WebKit(またはKHTML))、Win32 API全体をリバースエンジニアリングすることを望まず、代わりにkeygenをリバースエンジニアリングしました。

Webフォーム2.0(現在HTML仕様に統合されています)で指定されたのは、それを実装したブラウザ間の相互運用性を向上させるためです。

それ以来、IEチームはkeygenを実装することを拒否したことを繰り返し、仕様は(ドライサイエンスフィクションにならないようにするために)変更され、実際の実装:

注:この仕様では、ユーザーエージェントがサポートするキータイプを指定していません。ユーザーエージェントがキータイプをまったくサポートしない可能性があります。

要するに、これは新しい要素ではなく、IEを無視できない限り、おそらく望んでいないものです。

24
Ms2ger

「正確に」探している場合は、 [〜#〜] rfc [〜#〜] を読むことをお勧めします。

keygen要素は、SSLが通信のプライバシーとサーバーの認証を懸念している間、ユーザーの認証用のキーを作成するためのものです。 RFCからの引用

この仕様は、生成された秘密鍵の使用方法を指定しません。 SignedPublicKeyAndChallenge(SPKAC)構造を受け取った後、サーバーはクライアント証明書を生成し、それをダウンロードのためにユーザーに提供することが期待されます。この証明書は、ダウンロードされて秘密鍵とともにキーストアに保存されると、TLSおよび証明書認証を使用するサービスの認証に使用できます。

7
Andrew

非推奨

この機能は、Web標準から削除されました。一部のブラウザではまだサポートされている場合がありますが、削除される過程にあります。使用を避け、可能であれば既存のコードを更新してください。この機能はいつでも機能しなくなる可能性があることに注意してください。

ソース

5
Nermien Barakat

このドキュメントは、keygen要素について詳しく説明するのに役立ちます。その要件は、 https://dvcs.w3.org/hg/WebID/raw-file/tip/spec/index-respec。 html#creating-a-certificate 2.1.1

0
Chawathe Vipul