RemoteCertificateValidationCallback Делегат
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Проверяет удаленный ssl-сертификат, используемый для проверки подлинности.
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
Параметры
- sender
- Object
Объект, содержащий сведения о состоянии для этой проверки.
- certificate
- X509Certificate
Сертификат, используемый для проверки подлинности удаленной стороны.
- chain
- X509Chain
Цепочка центров сертификации, связанных с удаленным сертификатом.
- sslPolicyErrors
- SslPolicyErrors
Одна или несколько ошибок, связанных с удаленным сертификатом.
Возвращаемое значение
Boolean Значение, определяющее, принимает ли указанный сертификат для проверки подлинности.
Примеры
В следующем примере кода реализуется метод, вызываемый экземпляром RemoteCertificateValidationCallback класса. Если возникают ошибки проверки, этот метод отображает их и возвращает false, что предотвращает обмен данными с сервером без проверки подлинности.
// 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;
}
В следующем примере кода делегат создается с помощью метода, определенного в предыдущем примере кода.
// 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;
}
Комментарии
Аргумент делегата sslPolicyErrors содержит все ошибки сертификата, возвращаемые SSPI при проверке подлинности клиента или сервера. Значение Boolean , возвращаемое методом, вызываемым этим делегатом, определяет, разрешена ли проверка подлинности успешно.
Этот делегат используется с классом SslStream .
Методы расширения
| Имя | Описание |
|---|---|
| GetMethodInfo(Delegate) |
Возвращает объект, представляющий метод, представленный указанным делегатом. |