System.Net クラスでは、Secure Socket Layer (SSL) 接続のSystem.Security.Cryptography.X509Certificatesを選択して検証するいくつかの方法がサポートされています。 クライアントは、1 つ以上の証明書を選択して、サーバーに対して自身を認証できます。 サーバーでは、クライアント証明書に認証用の 1 つ以上の特定の属性が必要な場合があります。
定義
証明書は、公開キー、属性 (バージョン番号、シリアル番号、有効期限など) と証明機関からのデジタル署名を含む ASCII バイト ストリームです。 証明書は、暗号化された接続を確立したり、サーバーに対してクライアントを認証したりするために使用されます。
クライアント証明書の選択と検証
クライアントは、特定の SSL 接続に対して 1 つ以上の証明書を選択できます。 クライアント証明書は、Web サーバーまたは SMTP メール サーバーへの SSL 接続に関連付けることができます。 クライアントは、 X509Certificate または X509Certificate2 クラス オブジェクトのコレクションに証明書を追加します。 電子メールを例として使用すると、証明書コレクションは、SmtpClient クラスのClientCertificates プロパティに関連付けられたX509CertificateCollection) のインスタンスです。 HttpWebRequest クラスにも同様のClientCertificatesプロパティがあります。
X509CertificateとX509Certificate2 クラスの主な違いは、秘密キーがX509Certificate クラスの証明書ストアに存在する必要があることです。
証明書がコレクションに追加され、特定の SSL 接続に関連付けられている場合でも、サーバーが要求しない限り、証明書はサーバーに送信されません。 接続に複数のクライアント証明書が設定されている場合は、サーバーによって提供される証明書発行者の一覧とクライアント証明書発行者名の一致を考慮したアルゴリズムに基づいて、最適な証明書が使用されます。
SslStream クラスでは、SSL ハンドシェイクをさらに制御できます。 クライアントは、使用するクライアント証明書を選択するデリゲートを指定できます。
リモート サーバーは、クライアント証明書が有効であり、最新であり、適切な証明機関によって署名されていることを確認できます。 ServerCertificateValidationCallbackにデリゲートを追加して、証明書の検証を適用できます。
クライアント証明書の選択
.NET Framework は、次の方法でサーバーに提示するクライアント証明書を選択します。
クライアント証明書が以前にサーバーに提示された場合、証明書は最初に提示されたときにキャッシュされ、後続のクライアント証明書要求に再利用されます。
デリゲートが存在する場合は、常にデリゲートの結果をクライアント証明書として使用して選択します。 可能な場合はキャッシュされた証明書を使用しようとしますが、デリゲートが null を返し、証明書コレクションが空でない場合は、キャッシュされた匿名資格情報を使用しないでください。
これがクライアント証明書の最初の課題である場合、Framework は、 X509Certificate 内の証明書または接続に関連付けられている X509Certificate2 クラス オブジェクトを列挙し、サーバーによって提供される証明書発行者の一覧とクライアント証明書発行者名の一致を検索します。 一致する最初の証明書がサーバーに送信されます。 一致する証明書がない場合、または証明書コレクションが空の場合は、匿名資格情報がサーバーに送信されます。
証明書構成のツール
クライアントとサーバーの証明書の構成には、いくつかのツールを使用できます。
Winhttpcertcfg.exe ツールを使用して、クライアント証明書を構成できます。 Winhttpcertcfg.exe ツールは、Windows Server 2003 リソース キットのツールの 1 つとして提供されます。 このツールは、www.microsoft.comの Windows Server 2003 リソース キット ツールの一部としてダウンロードすることもできます。
HttpCfg.exe ツールを使用して、HttpListener クラスのサーバー証明書を構成できます。 HttpCfg.exe ツールは、Windows Server 2003 および Windows XP Service Pack 2 のサポート ツールの 1 つとして提供されます。 HttpCfg.exe およびその他のサポート ツールは、Windows Server 2003 または Windows XP に既定ではインストールされません。 Windows Server 2003 の場合。 サポート ツールは、Windows Server 2003 CD-ROM 上の次のフォルダーとファイルとは別にインストールされます。
\Support\Tools\Suptools.msi
Windows XP Service Pack 2 で使用するために、Windows XP サポート ツールは www.microsoft.comからダウンロードできます。
HttpCfg.exe ツールのバージョンのソース コードは、Windows Server SDK のサンプルとしても提供されます。 HttpCfg.exe サンプルのソース コードは、次のフォルダーの下にある Windows SDK の一部として、ネットワーク サンプルと共に既定でインストールされます。
C:\Program Files\Microsoft SDK\Windows\v1.0\Samples\NetDS\http\serviceconfig
これらのツールに加えて、 X509Certificate クラスと X509Certificate2 クラスには、ファイル システムから証明書を読み込むためのメソッドが用意されています。
こちらも参照ください
.NET