未设置Sslstream .NET RemoteCertificateValidationCallback对象引用

时间:2012-01-30 10:40:48

标签: c++-cli certificate sslstream

我有一个客户端和服务器,它使用sslstream类进行通信并进行经过身份验证。

两者都使用RemoteCertificateValidationCallback来验证证书,如下所示。

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

验证客户端证书方法:

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)中,并由受信任的根CA签名。

0 个答案:

没有答案