RemoteCertificateValidationCallback Delegar

Definição

Verifica o certificado remoto da Secure Sockets Layer (SSL) utilizado 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ção de estado para esta validação.

certificate
X509Certificate

O certificado usado para autenticar a parte remota.

chain
X509Chain

A cadeia de autoridades certificadoras associada ao certificado remoto.

sslPolicyErrors
SslPolicyErrors

Um ou mais erros associados ao certificado remoto.

Devolver Valor

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

Exemplos

O exemplo de código seguinte implementa um método que é invocado por uma instância da RemoteCertificateValidationCallback classe. Se houver erros de validação, este método mostra-os e devolve false, o que impede 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 seguinte 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;
}

Observações

O argumento do sslPolicyErrors delegado contém quaisquer erros de certificado devolvidos pelo SSPI durante a autenticação do cliente ou servidor. O Boolean valor devolvido pelo método invocado por este delegado determina se a autenticação pode ter sucesso.

Este delegado é usado com a SslStream turma.

Métodos da Extensão

Name Description
GetMethodInfo(Delegate)

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

Aplica-se a

Ver também