<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor></dfn>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント</anchor>から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSサーバー</anchor>へ<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor></dfn>を送信することで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>を行う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証方式</anchor>です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> で使われることが多いですが、それ以外でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor>
を使う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>で利用できます。</p><section><h1>呼称</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor>
の機能であることを明確にするため、
<dfn>TLSクライアント認証</dfn>、
<dfn>TLSクライアント証明書</dfn>のようにいうことがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> は古くは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL</anchor> と呼ばれていました。未だに
<dfn>SSLクライアント認証</dfn>、
<dfn>SSLクライアント証明書</dfn>のようにいうことがありますし、
<dfn>SSL/TLSクライアント認証</dfn>、
<dfn>SSL/TLSクライアント証明書</dfn>のようにいうことがあります。
厳密に言えば、
現在となっては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL</anchor>
が使われることはまずありません。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>SSL</anchor> </sw-see></p></section><section><h1>プロトコル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor>
では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー証明書</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>を送信することになっていますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を用意しなければならない義務はありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の求めがある時、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>に送信します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を検査して、
接続を継続するか、中断するか選択できます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>がない場合や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>が適切でない場合、
そのまま接続を継続することも選択できますし、
中断することもできます。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の動作は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の実装や設定によって変わります。)</p><figure class="short list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS <code xmlns="http://www.w3.org/1999/xhtml">Certificate</code></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS <code xmlns="http://www.w3.org/1999/xhtml">CertificateRequest</code></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS <code xmlns="http://www.w3.org/1999/xhtml">CertificateVerify</code></anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor></li><li><code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-x509-user-cert</anchor></code></li><li><code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">keygen</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor></li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">importUserCertificates</anchor></code></li></ul></figure><section><h1>再折衝</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS handshake</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>からの要求に応じて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>へと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を送信するものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS handshake</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> を開始する最初のものであっても構いませんし、
その後の任意のタイミングで行っても構いません (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>)。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mod_ssl</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返すに当たり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>ごとに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>の設定を行うことができます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の処理の時点でその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>に必要な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を受け取っていないことに気づいたら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>に対して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>を求めます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が適切な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を提示できれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送ります。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>がどのように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>を行うかは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>がわかるまで決められませんが、
どの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ディレクトリー</anchor>へのアクセスなのかは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP要求</anchor>を受信するまでわかりません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP要求</anchor>を受信するためには最初の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS handshake</anchor>
は終わっている必要があります。つまりこの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> の方法を実現するには、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>を使うしかありません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>のための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>は、上位のプロトコルで適当なタイミング
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP要求</anchor>を受信して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP応答</anchor>を送る前など) で行われるのが普通ですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> と上位のプロトコルとの間でこのタイミングを調整する方法はないので、
それは保証されません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;27</anchor-internal> のように扱いは実装によります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> における扱いについては、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> を参照。</p></section></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 多くの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>や、その他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPS</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が対応しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 公開された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>では滅多に使われませんが、組織内等の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イントラネット</anchor>系
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>ではしばしば用いられています。</p></section><section><h1>証明書</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント証明書</anchor>のような言い方をしますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>に使われる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>という、
利用目的を表す語です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>に適した形の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>、
という条件は考えられなくもないですが、
特別に定められた技術的な絶対要件があるというものではありません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー証明書</anchor>として発行されたものを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>として使うことも、
技術的には可能です。 (それに意味があるか、
使いやすいかどうかはまた別の問題です。)</p></example></section><section><h1>証明書データベース</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 多くの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書データベース</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>
(および<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ルート証明書</anchor>や必要があれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間証明書</anchor>) を保持しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PKCS #12</anchor> などのファイルを手動で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が追加することもできますし、 <del><code class="HTMLe" xml:lang="en">keygen</code> および</del><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書ダウンロード</anchor>により半自動で追加することもできます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>証明書データベース</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を要求された場合、
その条件に該当する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>が見つかればそれを送信します。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">要求は <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CertificateRequest</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>により行います。
送信するべき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の条件もそこに記述されています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアログ</anchor>を表示して適切な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>に選択させます
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal>)。 (自動選択させるオプションが用意されていることもあります。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> 
その他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>やそれを使う専用の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>などは、
それ以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラム</anchor>的な方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を選択するように設計されているかもしれません。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>証明書データベース</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 実装上は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>のことを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">個人証明書</anchor>などと呼ぶようです。</p></section><section><h1>ダイアログ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>の求めがあると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">モーダルダイアログ</anchor>を表示します。これは初回の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">handshake</anchor> だけでなく、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>であってもです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアログ</anchor>では利用可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>のリストか、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>なしを選ぶことができます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> ただし利用できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor> (サーバーが指定した条件に合致する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">個人証明書</anchor>) がまったくなければ、自動的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>なしとなります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の選択 (または無選択) を記憶しています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト名</anchor>ごとに覚えているようです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト名</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポート番号</anchor>の組ごとに覚えているようです。
<time>2015-09-07T13:59:17.00Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では、記憶させずにその場限りで選択するオプションが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ダイアログ</anchor>に表示されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 一旦記憶させるとその後ずっと (認証失敗しても) 同じものを選択し続けます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>から求められた「組織」と「発行者」がダイアログに表示されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 選択後、まだ接続が有効なら、そのまま選択した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を使って処理を継続します。
接続が既に無効になっていれば、改めて接続します。そちらで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を要求して来れば、
記憶している選択された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を使います。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPヘッダー</anchor>後の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空行</anchor>より前で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>があればダイアログを表示し、
それ以降なら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ネットワークエラー</anchor>として扱うようです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>終了後なら無視するようです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>終了後も含めてどこであってもダイアログを表示するようです。 <time>2015-09-07T15:55:14.800Z</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> で選択を記憶させないようにすると、同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の処理中の複数回の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">再折衝</anchor>でもそれぞれダイアログを表示するように見えます。 <time>2015-09-07T16:03:35.000Z</time></p></section><section><h1>他の認証方式との比較</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パスワード</anchor>を入力させる必要がないという意味で安全な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>方式です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の管理が必要という点で、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>にとってはハードルが高いかもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> かつての <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">keygen</anchor></code>
と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書ダウンロード</anchor>を使うと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>がほとんど意識することなく
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>の管理を委ねられますが、
他の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>を使ったり、他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">装置</anchor>上で動作する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>を使ったりしたい時に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>を安全に共有することは平均的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>には困難かもしれません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> 
それ以外の場合、管理者と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の間で安全な方法で鍵と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の受け渡しを行い、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>にインストールさせる必要がありますが、
これも平均的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>には難しい作業です。
ある程度の訓練を受けた管理者でないと、鍵の発行や管理と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の手引きも大変でしょう。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP認証</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本認証</anchor>など)
や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クッキー認証</anchor>では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証</anchor>失敗時の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP応答</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アカウント登録</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パスワード</anchor>の再発行などの回復手段を案内することができます。
しかし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSクライアント認証</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLS</anchor> のセッション開始前に接続を閉じてしまうため、
同様の案内の機会がありません。
そのため <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は一般的な認証エラーの表示しか行えません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 理論上は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TLSサーバー</anchor>は認証に失敗しても未認証状態で接続を継続し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP応答</anchor>等の方法でエラーを伝えることはできます。しかしそのような利用方法が実際になされているのかどうかは不明です。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント証明書</anchor>を必須とするオプションの他に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の提示は求めるが必須とはしないオプションもあります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の有無により異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返すことにすれば、
認証エラーの表示を行えます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</anchor-end> 
この不便が、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>が使われる場面が少ない理由の1つでもあります。
一方で、外部の者に案内すら晒さないことをむしろ好ましいとして採用する理由の1つにもなっています。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 2.0クライアント認証</anchor>とは無関係です。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <cite xml:lang="en">RFC 4681 - TLS User Mapping Extension</cite>
(<time>2015-02-01 19:05:39 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc4681">http://tools.ietf.org/html/rfc4681</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite>Transport Layer Security (TLS) Parameters</cite>
(<time>2015-02-27 12:03:35 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-14">http://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-14</anchor-external></figcaption><blockquote><p>CSV</p><p>table-tls-parameters-14-range</p><p>Range 	Registration Procedures </p><p>0-63	Standards Action</p><p>64-223	Specification Required</p><p>224-255	Reserved for Private Use</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="ja">Chrome 搭載デバイスのクライアント証明書を管理する - Chrome for Business ヘルプ</cite>
(<time>2015-04-14 13:47:25 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://support.google.com/chrome/a/answer/6080885?hl=ja">https://support.google.com/chrome/a/answer/6080885?hl=ja</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite>chrome.platformKeys - Google Chrome</cite>
(<time>2015-04-14 13:48:42 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.chrome.com/extensions/platformKeys">https://developer.chrome.com/extensions/platformKeys</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite>chrome.enterprise.platformKeys - Google Chrome</cite>
(<time>2015-04-14 13:48:50 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.chrome.com/extensions/enterprise_platformKeys">https://developer.chrome.com/extensions/enterprise_platformKeys</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite>Developer Guide: Certificate Management Extension API on Chrome OS - The Chromium Projects</cite>
(<time>2015-04-14 09:20:04 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.chromium.org/administrators/certificate-management-extension-api-on-chrome-os">http://www.chromium.org/administrators/certificate-management-extension-api-on-chrome-os</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xml:lang="ja">クライアント証明書の登録方法 | サイボウズ製品 マニュアルサイト</cite>
(<time>2014-08-16 02:59:55 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://manual.cybozu.co.jp/tech/webbrowser/certificate.html">https://manual.cybozu.co.jp/tech/webbrowser/certificate.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">draft-agl-tls-encryptedclientcerts-00 - Transport Layer Security (TLS) Encrypted Client Certificates</cite>
(<time>2015-01-27 14:46:10 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/draft-agl-tls-encryptedclientcerts-00">https://tools.ietf.org/html/draft-agl-tls-encryptedclientcerts-00</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <cite xml:lang="en">RFC 6546 - Transport of Real-time Inter-network Defense (RID) Messages over HTTP/TLS</cite>
(<time>2016-01-08 21:27:35 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc6546">https://tools.ietf.org/html/rfc6546</anchor-external></figcaption><blockquote><p>RID systems MUST use mutual authentication; that is, both RID systems</p><p>acting as HTTPS clients and RID systems acting as HTTPS servers MUST</p><p>be identified by an X.509 certificate <strong>[</strong>RFC5280<strong>]</strong>.  Mutual</p><p>authentication requires full path validation on each certificate, as</p><p>defined in <strong>[</strong>RFC5280<strong>]</strong>.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <cite xml:lang="en">Keygen and Client Certificates</cite>
(<time>2015-12-01 07:01:19 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://w3ctag.github.io/client-certificates/">https://w3ctag.github.io/client-certificates/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <cite xml:lang="en">Fix #222: no credentials, no TLS client certificate · whatwg/fetch@bef06e1</cite>
(<time>2016-03-15 11:36:54 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/fetch/commit/bef06e11e3b3b7589d23c0c892057c5cd5174c2a">https://github.com/whatwg/fetch/commit/bef06e11e3b3b7589d23c0c892057c5cd5174c2a</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <cite xml:lang="en">21013 – Credentials and HTTP authentication</cite>
(<time>2016-03-15 11:41:02 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/Bugs/Public/show_bug.cgi?id=21013">https://www.w3.org/Bugs/Public/show_bug.cgi?id=21013</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <cite xml:lang="en">RFC 8075 - Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)</cite>
(<time>2017-03-01 17:25:23 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc8075#section-10">https://tools.ietf.org/html/rfc8075#section-10</anchor-external></figcaption><blockquote><p>An HC Proxy MUST implement Transport Layer Security (TLS) with a Pre-</p><p>Shared Key (PSK) <strong>[</strong>RFC4279<strong>]</strong> and SHOULD implement TLS <strong>[</strong>RFC5246<strong>]</strong> with</p><p>support for client authentication using X.509 certificates.  </p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <cite xml:lang="en">RFC 8040 - RESTCONF Protocol</cite>
(<time>2017-03-27 23:03:09 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc8040#section-2.5">https://tools.ietf.org/html/rfc8040#section-2.5</anchor-external></figcaption><blockquote><p>To authenticate a client, a RESTCONF server SHOULD require</p><p>authentication based on TLS client certificates (Section 7.4.6 of</p><p><strong>[</strong>RFC5246<strong>]</strong>).  If certificate-based authentication is not feasible</p><p>(e.g., because one cannot build the required PKI for clients), then</p><p>HTTP authentication MAY be used. </p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <cite xml:lang="ja-jp">Web アプリの TLS 相互認証を構成する方法 | Microsoft Docs</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">naziml</anchor>著, <time>2017-04-24 19:07:24 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.microsoft.com/ja-jp/azure/app-service-web/app-service-web-configure-tls-mutual-auth">https://docs.microsoft.com/ja-jp/azure/app-service-web/app-service-web-configure-tls-mutual-auth</anchor-external></figcaption><blockquote><p>さまざまな種類の認証を有効にすることで、Azure Web アプリへのアクセスを制限できます。 これを行う 1 つの方法は、要求が TLS と SSL を経由するときに、クライアント証明書を使用して認証することです。 このメカニズムは、TLS 相互認証またはクライアント証明書認証と呼ばれます。</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <cite xml:lang="en">Configuring TLS Mutual Authentication</cite>
(<time>2016-06-09 21:40:54 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://docs.oracle.com/cd/E74890_01/books/Secur/secur_dataencrypt005.htm">http://docs.oracle.com/cd/E74890_01/books/Secur/secur_dataencrypt005.htm</anchor-external></figcaption><blockquote><p>In TLS mutual authentication, the client is authenticated to the server and the server is authenticated to the client during the TLS handshake, using digital certificates issued by certificate authorities.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <cite xml:lang="en-US">TLS Mutual Auth in GoLang – Bite-Code</cite>
(<time>2017-04-24 20:26:02 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.bite-code.com/2015/06/25/tls-mutual-auth-in-golang/">http://www.bite-code.com/2015/06/25/tls-mutual-auth-in-golang/</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <cite xml:lang="en">775438 - Chrome sends TLS client certificates in CORS preflight, in violation of spec requirements - chromium - Monorail</cite>
(<time>2017-11-08 22:45:51 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://bugs.chromium.org/p/chromium/issues/detail?id=775438">https://bugs.chromium.org/p/chromium/issues/detail?id=775438</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <cite xml:lang="en">/docs/man1.1.0/ssl/SSL_CTX_set_client_cert_cb.html</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenSSL Foundation, Inc.</anchor>著, <time>2018-09-30 23:41:23 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_client_cert_cb.html">https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_client_cert_cb.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <cite xml:lang="en">/docs/manmaster/man3/SSL_CTX_set_client_CA_list.html</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenSSL Foundation, Inc.</anchor>著, <time>2018-09-30 23:57:21 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_client_CA_list.html">https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_client_CA_list.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <cite xml:lang="en">/docs/manmaster/man3/SSL_get_client_CA_list.html</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenSSL Foundation, Inc.</anchor>著, <time>2018-09-30 23:58:35 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.openssl.org/docs/manmaster/man3/SSL_get_client_CA_list.html">https://www.openssl.org/docs/manmaster/man3/SSL_get_client_CA_list.html</anchor-external></p></section></body></html>