Прочитать на английском

Поделиться через


ICertificatePolicy Интерфейс

Определение

Проверяет достоверность сертификата сервера.

public interface ICertificatePolicy

Примеры

В следующем примере создается политика сертификата, которая возвращает false для любой проблемы с сертификатом, и выводит сообщение, указывающее на проблему на консоли. Перечисление CertificateProblem определяет константы SSPI для проблем с сертификатом, а частный метод GetProblemMessage создает печатное сообщение о проблеме.

public  enum    CertificateProblem  : long
{
        CertEXPIRED                   = 0x800B0101,
        CertVALIDITYPERIODNESTING     = 0x800B0102,
        CertROLE                      = 0x800B0103,
        CertPATHLENCONST              = 0x800B0104,
        CertCRITICAL                  = 0x800B0105,
        CertPURPOSE                   = 0x800B0106,
        CertISSUERCHAINING            = 0x800B0107,
        CertMALFORMED                 = 0x800B0108,
        CertUNTRUSTEDROOT             = 0x800B0109,
        CertCHAINING                  = 0x800B010A,
        CertREVOKED                   = 0x800B010C,
        CertUNTRUSTEDTESTROOT         = 0x800B010D,
        CertREVOCATION_FAILURE        = 0x800B010E,
        CertCN_NO_MATCH               = 0x800B010F,
        CertWRONG_USAGE               = 0x800B0110,
        CertUNTRUSTEDCA               = 0x800B0112
}

public class MyCertificateValidation : ICertificatePolicy
{
    // Default policy for certificate validation.
    public static bool DefaultValidate = false;

    public bool CheckValidationResult(ServicePoint sp, X509Certificate cert,
       WebRequest request, int problem)
    {
        bool ValidationResult=false;
        Console.WriteLine("Certificate Problem with accessing " +
           request.RequestUri);
        Console.Write("Problem code 0x{0:X8},",(int)problem);
        Console.WriteLine(GetProblemMessage((CertificateProblem)problem));

        ValidationResult = DefaultValidate;
        return ValidationResult;
    }

    private String GetProblemMessage(CertificateProblem Problem)
    {
        String ProblemMessage = "";
        CertificateProblem problemList = new CertificateProblem();
        String ProblemCodeName = Enum.GetName(problemList.GetType(),Problem);
        if(ProblemCodeName != null)
           ProblemMessage = ProblemMessage + "-Certificateproblem:" +
              ProblemCodeName;
        else
           ProblemMessage = "Unknown Certificate Problem";
        return ProblemMessage;
     }
}

Комментарии

Интерфейс ICertificatePolicy используется для предоставления пользовательской проверки сертификата безопасности для приложения. Политика по умолчанию разрешает допустимые сертификаты, а также действительные сертификаты, срок действия которых истек. Чтобы изменить эту политику, реализуйте ICertificatePolicy интерфейс с другой политикой, а затем назначьте эту политику .ServicePointManager.CertificatePolicy

ICertificatePolicy использует интерфейс поставщика поддержки безопасности (SSPI). Дополнительные сведения см. в документации по SSPI на сайте MSDN.

Методы

CheckValidationResult(ServicePoint, X509Certificate, WebRequest, Int32)

Проверяет достоверность сертификата сервера.

Применяется к

Продукт Версии
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1