Sslstream .NET RemoteCertificateValidationCallback Ссылка на объект не установлена - PullRequest
0 голосов
/ 30 января 2012

У меня есть клиент и сервер, которые используют класс sslstream для взаимодействия и аутентификации.

Оба используют RemoteCertificateValidationCallback для проверки сертификата, как показано ниже.

SslStream^ sslStream = gcnew SslStream(
            client->GetStream(), false,
            gcnew RemoteCertificateValidationCallback(ValidateClientCertificate),
            nullptr);

Validateметод сертификата клиента:

static bool ValidateClientCertificate(
            Object^ sender,
            X509Certificate^ certificate,
            X509Chain^ chain,
            SslPolicyErrors sslPolicyErrors)
        {

        // check certificate hash                                                               
        if( certificate->GetCertHashString()->Equals("cert hash") ) {                                                                                                          
             Console::Write( "oK\n" );                                                      
             return true;                                                                   
         }                                                                                        

         Console::Write(" ERROR\n");                  
         Console::WriteLine("[-] Hash doesn't match");                                 

         // Do not allow this client to communicate with unauthenticated servers.                           
         return false;  
}

Клиентская сторона работает нормально, но когда сервер выполняет эту функцию, я получаю исключение: Ссылка на объект не установлена ​​на экземпляр объекта .

Это означает, что один или все эти объекты (отправитель, сертификат, цепочка) не установлены, поскольку сервер не получает сертификат клиента.

Кто-нибудь знает, почему это происходит?

Дополнительная информация:

  • Оба приложения работают с правами администратора.
  • Оба сертификата находятся в своих хранилищах (My) и подписаны доверенным корневым центром сертификации.
...