Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

RemoteCertificateValidationCallback-Delegat

 

Veröffentlicht: Oktober 2016

Überprüft das remote Secure Sockets Layer (SSL)-Zertifikat für die Authentifizierung verwendet.

Namespace:   System.Net.Security
Assembly:  System (in System.dll)

public delegate bool RemoteCertificateValidationCallback(
	object sender,
	X509Certificate certificate,
	X509Chain chain,
	SslPolicyErrors sslPolicyErrors
)

Parameter

sender
Type: System.Object

Ein Objekt, das Zustandsinformationen für diese Validierung enthält.

certificate
Type: System.Security.Cryptography.X509Certificates.X509Certificate

Das Zertifikat, das zum Authentifizieren der Remoteseite verwendet.

chain
Type: System.Security.Cryptography.X509Certificates.X509Chain

Die Kette von Zertifizierungsstellen Remotezertifikat zugeordnet.

sslPolicyErrors
Type: System.Net.Security.SslPolicyErrors

Ein oder mehrere Fehler Remotezertifikat zugeordnet.

Rückgabewert

Type: System.Boolean

Ein Boolean Wert, der bestimmt, ob das angegebene Zertifikat für die Authentifizierung akzeptiert wird.

Der Delegat sslPolicyErrors Argument enthält alle während der Authentifizierung des Clients oder Servers von SSPI zurückgegebenen Zertifikatsfehler. Die Boolean von diesem Delegaten aufgerufene Methode zurückgegebene Wert bestimmt, ob die Authentifizierung erfolgreich ist.

Dieser Delegat wird verwendet, mit der SslStream Klasse.

Das folgende Codebeispiel implementiert eine Methode, die aufgerufen wird, von einer Instanz der RemoteCertificateValidationCallback Klasse. Wenn Validierungsfehler vorhanden sind, wird diese Methode zeigt diese an und gibt false, die verhindert die Kommunikation mit dem Server nicht authentifiziert.


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

Im folgenden Codebeispiel wird der Delegat, der mithilfe der im vorherigen Codebeispiel definierten Methode erstellt.

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

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: