この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

RemoteCertificateValidationCallback デリゲート

 

公開日: 2016年11月

認証に使用されるリモートの Secure Sockets Layer (SSL) 証明書を確認します。

名前空間:   System.Net.Security
アセンブリ:  System (System.dll 内)

public delegate bool RemoteCertificateValidationCallback(
	object sender,
	X509Certificate certificate,
	X509Chain chain,
	SslPolicyErrors sslPolicyErrors
)

パラメーター

sender
Type: System.Object

この検証の状態情報を格納するオブジェクト。

certificate
Type: System.Security.Cryptography.X509Certificates.X509Certificate

リモート パーティの認証に使用される証明書。

chain
Type: System.Security.Cryptography.X509Certificates.X509Chain

リモート証明書に関連付けられている証明機関のチェーン。

sslPolicyErrors
Type: System.Net.Security.SslPolicyErrors

リモート証明書に関連付けられている 1 つまたは複数のエラーです。

戻り値

Type: System.Boolean

A Boolean 認証に指定された証明書を受け入れるかどうかを決定する値。

デリゲートの sslPolicyErrors 引数には、クライアントまたはサーバーの認証中に SSPI から返された証明書エラーが含まれています。 Boolean このデリゲートによって起動されるメソッドによって返される値は、認証が成功できるかどうかを決定します。

このデリゲートを併用、 SslStream クラスです。

次のコード例のインスタンスによって呼び出されるメソッドを実装して、 RemoteCertificateValidationCallback クラスです。 このメソッドがそれらを表示し、返します検証エラーがある場合 false, 、認証されていないサーバーとの通信を防ぐことができます。


// The following method is invoked by the RemoteCertificateValidationDelegate.
public static bool ValidateServerCertificate(
      object sender,
      X509Certificate certificate,
      X509Chain chain,
      SslPolicyErrors sslPolicyErrors)
{
   if (sslPolicyErrors == SslPolicyErrors.None)
        return true;

    Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

    // Do not allow this client to communicate with unauthenticated servers.
    return false;
}

次のコード例では、前のコード例で定義されているメソッドを使用して、デリゲートを作成します。

// Create a TCP/IP client socket.
// machineName is the host running the server application.
TcpClient client = new TcpClient(machineName,443);
Console.WriteLine("Client connected.");
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
    client.GetStream(), 
    false, 
    new RemoteCertificateValidationCallback (ValidateServerCertificate), 
    null
    );
// The server name must match the name on the server certificate.
try 
{
    sslStream.AuthenticateAsClient(serverName);
} 
catch (AuthenticationException e)
{
    Console.WriteLine("Exception: {0}", e.Message);
    if (e.InnerException != null)
    {
        Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
    }
    Console.WriteLine ("Authentication failed - closing the connection.");
    client.Close();
    return;
}

.NET Framework
2.0 以降で使用可能
トップに戻る
表示: