Schannel を使用した認証の実行

すべての Schannel プロトコルでは、サーバーが ID の証明として信頼された証明機関 (CA) からの証明書を提供する必要があります。 このプロセスは、サーバー認証と呼ばれます。 クライアントが ID の証明を提供するクライアント認証は省略可能であり、いつでもサーバーから要求できます。

サーバーの認証

Schannel の既定の動作では、WinVerifyTrust 関数を使用して、サーバー証明書整合性と所有権を確認します。 この機能を無効にするには、 InitializeSecurityContext (Schannel) 関数を呼び出すときにISC_REQ_MANUAL_CRED_VALIDATIONを指定します。 詳細については、「 Schannel 資格情報の手動検証」を参照してください。

クライアントの認証

Schannel はクライアントの証明書を検証しません。サーバーは、この認証を手動で実行する必要があります。 通常、サーバーは、ユーザー アカウント情報を含むデータベースにクライアントの ID をチェックします。 証明書を使用してクライアントのアカウントを取得する必要があるサーバーについては、「 証明書のマッピング」を参照してください。

サーバーがクライアント認証を要求する場合、クライアントは証明書の 1 つをサーバーに送信する必要があります。 既定では、Schannel はクライアントへの通知なしで、 クライアント証明書 の検索とサーバーへの送信を試みます。 この機能を無効にするために、クライアントは InitializeSecurityContext (Schannel) 関数を呼び出すときにISC_REQ_USE_SUPPLIED_CREDSを指定します。 このフラグを指定すると、サーバーが認証を要求し、クライアントが以前に証明書を指定していない場合、Schannel はクライアントにSEC_I_INCOMPLETE_CREDENTIALSを返します。