RemoteCertificateValidationCallback Делегат

Определение

Проверяет удаленный ssl-сертификат, используемый для проверки подлинности.

public delegate bool RemoteCertificateValidationCallback(System::Object ^ sender, X509Certificate ^ certificate, X509Chain ^ chain, SslPolicyErrors sslPolicyErrors);
public delegate bool RemoteCertificateValidationCallback(object sender, X509Certificate? certificate, X509Chain? chain, SslPolicyErrors sslPolicyErrors);
public delegate bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors);
type RemoteCertificateValidationCallback = delegate of obj * X509Certificate * X509Chain * SslPolicyErrors -> bool
Public Delegate Function RemoteCertificateValidationCallback(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean 

Параметры

sender
Object

Объект, содержащий сведения о состоянии для этой проверки.

certificate
X509Certificate

Сертификат, используемый для проверки подлинности удаленной стороны.

chain
X509Chain

Цепочка центров сертификации, связанных с удаленным сертификатом.

sslPolicyErrors
SslPolicyErrors

Одна или несколько ошибок, связанных с удаленным сертификатом.

Возвращаемое значение

Boolean Значение, определяющее, принимает ли указанный сертификат для проверки подлинности.

Примеры

В следующем примере кода реализуется метод, вызываемый экземпляром 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,5000);
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;
}

Комментарии

Аргумент делегата sslPolicyErrors содержит все ошибки сертификата, возвращаемые SSPI при проверке подлинности клиента или сервера. Значение Boolean , возвращаемое методом, вызываемым этим делегатом, определяет, разрешена ли проверка подлинности успешно.

Этот делегат используется с классом SslStream .

Методы расширения

Имя Описание
GetMethodInfo(Delegate)

Возвращает объект, представляющий метод, представленный указанным делегатом.

Применяется к

См. также раздел