Требуется проверка имени хоста при установлении SSL-соединения - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно проверить 4 вещи при создании SSL-соединения

  1. Имя хоста в URL совпадает с сертификатом CN и SAN
  2. Сертификат, представленный сервером, подписан CA в доверенном хранилище
  3. Срок действия сертификата сервера не истек
  4. CA сертификат не истек

Код:

options.withT1s(new MqttClientOptionsBuilderT1sParameters()
{
    CertificationValidationCallBack=(cer, chain, error, o) =>
    {
        if(//do checks here)
        {
          //    check pass
              return true;
        }
        else
        {
          //   check fail
             return false;
        }
    }
}

1 Ответ

0 голосов
/ 01 мая 2019

Эти четыре проверки уже выполнены системой.Если у вас не было пользовательского обратного вызова, это именно то, что было бы применено для вас.

В пользовательском обратном вызове состояние этих состояний представлено параметрами error и chain ... error - это [Flags] значение.

Если установлено RemoteCertificateNameMismatch, то имя не соответствует записям SAN (или записям CN, если не было записей SAN-DNS) - ваше условие (1).

Если установлено значение RemoteCertificateChainErrors, то объект chain будет указывать, почему он недействителен (что-то истекло, корень не был доверенным, и намного больше потенциальных проблем).

Итак,самый простой ответ (без регистрации обратного вызова) - return errors == SslPolicyErrors.None;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...