Exportar (0) Imprimir
Expandir todo

RemoteCertificateValidationCallback (Delegado)

Nota: este delegado es nuevo en la versión 2.0 de .NET Framework.

Verifica el certificado SSL (Secure Sockets Layer) remoto que se utiliza para la autenticación.

Espacio de nombres: System.Net.Security
Ensamblado: System (en system.dll)

public delegate bool RemoteCertificateValidationCallback (
	Object sender,
	X509Certificate certificate,
	X509Chain chain,
	SslPolicyErrors sslPolicyErrors
)
/** @delegate */
public delegate boolean RemoteCertificateValidationCallback (
	Object sender, 
	X509Certificate certificate, 
	X509Chain chain, 
	SslPolicyErrors sslPolicyErrors
)
JScript admite el uso de delegados, pero no admite la declaración de delegados nuevos.

Parámetros

sender

Objeto que contiene información de estado para esta validación.

certificate

Certificado utilizado para autenticar la parte remota.

chain

La cadena de autoridades de certificado asociados al certificado remoto.

sslPolicyErrors

Uno o varios errores asociados al certificado remoto.

Valor devuelto

Un valor Boolean que determina si el certificado especificado es aceptado para autenticación.

El delegado del argumento sslPolicyErrors contiene cualquier certificado de errores devuelto por SSPI mientras se autentica el cliente o el servidor. El valor Boolean devuelto por el método invocado por este delegado determina si la autenticación se permite correctamente.

Este delegado se utiliza con la clase SslStream.

El siguiente código de ejemplo implementa un método invocado por una instancia de la clase RemoteCertificateValidationCallback. Si hay errores de validación, este método los muestra y devuelve false, lo que impide la comunicación con el servidor no 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;
}

El siguiente código de ejemplo crea el delegado utilizando el método definido en el código de ejemplo anterior.

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

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft