たとえば、2つの証明書ペアがあります。
最初のペア:
2番目のペア:
両方のクライアントがサーバーに対して認証できます。しかし、これらすべての方法の違いは何ですか? 「否認防止」を使用する証明書では、「TLS Webクライアント認証」を使用する/使用しないすべてのクライアントを認証できますか?
しかし、「否認防止」なしの「TLS Webサーバー認証」では、「TLS Webクライアント認証」を使用してのみクライアントを認証できますか?
それが正しいか?
拡張機能は、証明書に添付されたある種のポリシーメタデータにすぎません。技術的には、拡張機能に関係なく、証明書は同じままです。つまり、キーをIDにリンクするファイルです。その情報は、サーバー、クライアントの認証、他の証明書への署名、電子メールへの署名、ソフトウェア/ドライバーコードへの署名など、あらゆる目的に使用できます。
ここで拡張機能が機能します。アプリケーションは、この証明書に適用できる使用法を通知します。これにより、アプリケーションが無許可のコンテキストで証明書を見つけた場合、(または、使用法がクリティカルに設定されているかどうかに応じて)、証明書を無効として拒否します。
ただし、このチェックはアプリケーションレベルで行う必要があります。適切に実装されていないアプリケーションは、これらの使用法を適切にチェックせず、いつでも証明書を受け入れることができません。
また、補足すべき点がいくつかあります。
これらの拡張機能は、実際には2つの主要な部分に分かれています(1つは単に歴史的なものです)。
これらの主要な使用法はすべて関連付けられ、補足的な方法で使用されます。
一部の拡張機能には「クリティカル」のフラグが付けられる場合があります。このフラグは、特定の拡張機能を認識しない/実装していないアプリケーションが証明書を処理する方法を決定します。このような状況で、「クリティカル」フラグが有効になっている場合、アプリケーションmust証明書を拒否します。このフラグが設定されていない場合、アプリケーションmayは証明書を受け入れます。
拡張キー使用法の名前(およびNetscape証明書タイプ)は、理解するのがかなり簡単です。ただし、キーの使用法は、プロトコル(ネットワーク通信の場合)が証明書を使用する方法に大きく依存します。 SSL/TLSクライアント/サーバーアプリケーションでよく見られるキーの使用法は次のとおりです。
したがって、編集した質問に答えるには:
「否認防止」を使用する証明書では、「TLS Webクライアント認証」を使用する/使用しないすべてのクライアントを認証できますか?
しかし、「否認防止」なしの「TLS Webサーバー認証」では、「TLS Webクライアント認証」を使用してのみクライアントを認証できますか?
サーバーの証明書からの「否認防止」の使用状況は、サーバーではなくクライアントソフトウェアによってほとんどチェックされ、サーバーがクライアントの証明書を検証する方法には影響しません。
「TLS Webクライアント認証」を使用すると、クライアントの証明書がサーバーコンテキストで使用されなくなります。それがないと、認証はブロックされません。ただし、クライアントがこの使用法を使用せずに、代わりに「TLS Webサーバー認証」を使用して証明書を使用して認証を試みる場合、認証はサーバーによって拒否される可能性が最も高くなります。