RemoteCertificateValidationCallback Delegar

Definição

Verifica o certificado SSL (Secure Sockets Layer) remoto usado para autenticação.

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);
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 

Parâmetros

sender
Object

Um objeto que contém informações de estado para essa validação.

certificate
X509Certificate

O certificado usado para autenticar a parte remota.

chain
X509Chain

A cadeia de autoridades de certificação associadas ao certificado remoto.

sslPolicyErrors
SslPolicyErrors

Um ou mais erros associados ao certificado remoto.

Valor Retornado

Um Boolean valor que determina se o certificado especificado é aceito para autenticação.

Exemplos

O exemplo de código a seguir implementa um método invocado por uma instância da RemoteCertificateValidationCallback classe. Se houver erros de validação, esse método os exibirá e retornará false, o que impedirá a comunicação com o servidor não autenticado.


// 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;
}

O exemplo de código a seguir cria o delegado usando o método definido no exemplo de código anterior.

// 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;
}

Comentários

O argumento do delegado contém todos os erros de sslPolicyErrors certificado retornados pelo SSPI durante a autenticação do cliente ou servidor. O Boolean valor retornado pelo método invocado por esse delegado determina se a autenticação tem permissão para ser bem-sucedida.

Esse delegado é usado com a SslStream classe.

Métodos de Extensão

Nome Description
GetMethodInfo(Delegate)

Obtém um objeto que representa o método representado pelo delegado especificado.

Aplica-se a

Confira também