RemoteCertificateValidationCallback Delegát

Definice

Ověřuje vzdálený certifikát SSL (Secure Sockets Layer) používaný k ověřování.

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 

Parametry

sender
Object

Objekt, který obsahuje informace o stavu pro toto ověření.

certificate
X509Certificate

Certifikát použitý k ověření vzdálené strany.

chain
X509Chain

Řetěz certifikačních autorit přidružených ke vzdálenému certifikátu.

sslPolicyErrors
SslPolicyErrors

Jedna nebo více chyb přidružených ke vzdálenému certifikátu.

Návratová hodnota

Hodnota Boolean , která určuje, zda je zadaný certifikát přijat pro ověřování.

Příklady

Následující příklad kódu implementuje metodu, která je vyvolána instancí RemoteCertificateValidationCallback třídy. Pokud dojde k chybám ověření, tato metoda je zobrazí a vrátí false, což brání komunikaci s neověřeným serverem.


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

Následující příklad kódu vytvoří delegát pomocí metody definované v předchozím příkladu kódu.

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

Poznámky

Argument delegáta sslPolicyErrors obsahuje chyby certifikátu vrácené SSPI při ověřování klienta nebo serveru. Hodnota Boolean vrácená metodou vyvolanou tímto delegátem určuje, zda ověřování může být úspěšné.

Tento delegát se používá se SslStream třídou.

Metody rozšíření

Name Description
GetMethodInfo(Delegate)

Získá objekt, který představuje metodu reprezentovanou zadaným delegátem.

Platí pro

Viz také