証明書認証は、公開鍵認証が持つ問題の一部を解決します。公開鍵ホスト認証の場合、システム管理者は、各クライアントの既知のホスト一覧にすべてのサーバのホスト公開鍵を追加する必要があります。または、不明なホストに接続する時にホストの識別情報を確認することをクライアントユーザに依存することになります。証明書認証は、認証局 (CA) と呼ばれる信頼されたサードパーティを使用して、ホストから来る情報の正しさを確認することでこの問題を防止します。
公開鍵認証と同様、証明書認証は、公開鍵/秘密鍵ペアを使用してホストの識別情報を確認します。ただし、証明書認証の場合、公開鍵はデジタル証明書 PKI (Public Key Infrastructure) の核となる構成要素です。電子証明書 (別名、X.509 証明書) は認証局 (CA) によって発行されるもので、証明書内の情報の有効性を保証します。各証明書には、証明書の所有者に関する情報、証明書の所有者の公開鍵のコピー (メッセージおよび電子署名の暗号化と解読に使用)、電子署名 (証明書の内容に基づいて認証局が生成) が含まれています。受信者はこの電子署名を使用して、証明書が不正に変更されておらず、信頼できることを確認します。 に含まれ、この場合、2 つの鍵ペアが使用されます。ホストが 1 つの秘密鍵を保持し、CA が 2 番目の公開鍵を保持します。ホストは、CA から証明書を取得します。この証明書には、ホストに関する識別情報、ホスト公開鍵のコピー、CA の秘密鍵を使用して作成されたデジタル署名 送信されたメッセージの信頼性と整合性の確認に使用されます。通常、送信者は公開/秘密鍵のペアのうち秘密鍵を保有し、受信者は公開鍵を保有します。署名を作成するには、送信者はメッセージからハッシュを計算し、この値を自らの秘密鍵で暗号化します。受信者は、送信者の公開鍵を使用して署名を復号化し、受信したメッセージのハッシュを独自に計算します。復号化した値と計算した値が一致した場合、受信者は、送信者が秘密鍵の保有者であり、メッセージが送信中に改ざんされていないことを信頼します。 が含まれています。この証明書は、認証プロセス中にクライアントに送信されます。ホストから送信された情報の完全性を確認するため、クライアントは CA ルート証明書に封印されている CA の公開鍵のコピーを持つ必要があります。
ホストの識別情報を確認するために CA ルート証明書をインストールすることは、ホスト公開鍵をインストールし、構成することに比べて、いくつかの利点があります。
単一の CA 証明書を使用して、複数のサーバを認証することができます。
管理者は、Windows グループポリシを使用して、Windows クライアントに CA 証明書をインストールすることができます。
商業的に取得した証明書のルート証明書は、既にクライアント コンピュータで使用できる場合があります。Windows コンピュータでは、Internet Explorer で使用するための、一部のルート証明書があらかじめインストールされています。SSL/TLS 接続の場合、Reflection は、この証明書格納場所に既定で置かれた証明書をチェックします。
必要なら、ホストは、クライアントシステムを何も変更することなく、同じ CA から新しい証明書を取得できます。
サーバ証明書認証は、次のような順序で実行されます。
Secure Shell クライアントが接続を開始します。
ホストは、その証明書をクライアントに送信します。
クライアントは、CA ルート証明書を使用してサーバ証明書の有効性を確認します。
メモ:クライアントは、信頼されるルート格納場所に、すでに CA 証明書のコピーを持っている必要があります(単一の CA 証明書を使用して、複数のサーバを認証することができます)。
クライアントは、ホストの証明書に記載されているサーバ情報が対象ホストと一致することを確認します。
ホストが証明書の公開鍵に対応する秘密鍵を保持していることを確認するため、クライアントは試行 (任意のメッセージ) をサーバに送信し、このメッセージ文に基づいてハッシュ 「メッセージダイジェスト」と呼ぶこともあり、ハッシュまたはハッシュの値は可変長のデジタルデータから生成される固定長の数値です。ハッシュは元のデータよりもかなり小さく、計算によって生成されますが、別のデータから同一のハッシュを作成することは統計的にできないようになっています。 を計算します。
サーバは、試行メッセージに基づいてデジタル署名を作成します。サーバは独立してメッセージハッシュを計算し、その秘密鍵を使用して計算されたハッシュを暗号化します。次に、サーバは、このデジタル署名を試行に添付し、この署名付きメッセージをクライアントに返信します。
クライアントは、サーバの公開鍵を使用して署名を解読し、元のハッシュと自分で計算したハッシュを比較します。値が一致する場合、ホスト認証は成功します。
メモ:Reflection クライアントは、Reflection 証明書格納場所または Windows 証明書格納場所を使用して、ホスト証明書を確認できます。