サーバー証明書とクライアント証明書を混同している可能性があります。サービスが「証明書によって保護されている」と言うとき、どちらを意味するのかは明確ではありません。サーバー証明書とクライアント証明書はどちらもサービスを「保護」できますが、方法は異なります。サーバー証明書は通信を暗号化し、クライアント証明書はサービスを許可されたクライアントのみに制限します。
サーバー証明書のみを使用するセットアップは、HTTPS 経由で提供される Web サイトと似ています。サーバーのみに証明書が「インストール」されています (証明書の秘密鍵があることを意味します)。クライアントは独自の証明書を持っていませんが、サーバーは独自の証明書をクライアントに送信し、証明書に署名した機関を信頼していると仮定して、サーバーの身元を確認できます。さらに、サーバー ID が確立されると、証明書はクライアントとサーバー間のセッションを暗号化するための基礎を提供します。
これまでのところ、クライアント認証はありませんでした。クライアントは、(サーバー証明書のおかげで) 意図したサーバーと通信していることを認識しており、すべての通信は暗号化されていますが、サーバーが ID を検証する方法はありません。それに接続するクライアント。クライアント証明書は、クライアント認証を実行する1 つの方法です。より一般的な代替手段は、ユーザー名とパスワードです。
クライアント証明書を使用するには、各クライアントが有効な証明書と秘密鍵を持っている必要があります。これはサーバーの証明書とは異なります。繰り返しになりますが、サーバーは必ずしもこれらの証明書のローカル コピーを保存しているわけではありません。証明書はセキュリティ ハンドシェイク中に交換されます。
このコンテキストでの「有効な」とは、確立された基準 (たとえば、クライアント証明書のホワイトリスト、またはクライアント証明書が特定の機関によって発行されることを要求する) を使用して、サーバーへの ID の手段として受け入れられることを意味します。サーバー証明書を有効なものとして受け入れるために、信頼されたルートまでの一連の認証局をクライアントが単に信頼することは、多くの場合許容されますが、認証に役立つように、許容されるクライアント証明書に追加の制限を課す必要があります。ほとんどの場合、信頼できる証明書を持つ任意のクライアントが、クライアント証明書を使用してクライアントを認証するように構成されたサービスに接続できるようにするのに役立ちます。