title: The client and server cannot communicate, because they do not possess a common algorithm, C# SslStream
body: <p>Following is my Setup for mutual SSL authentication for client/server console app on Windows 10:</p>
  
  <ol>
  <li>There is a server listener console app that only accepts TLS 1.0 connections.</li>
  <li>Client console application uses SslStream.AuthenticateAsClient to configure a secure connection and uses TLS 1.2 connection.</li>
  <li>I am using the following example for mutual SSL authentication:
  <a href="http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication" rel="nofollow">http://www.codeproject.com/Articles/326574/An-Introduction-to-Mutual-SSL-Authentication</a></li>
  </ol>
  
  <p><strong>Server code:</strong></p>
  
  <pre><code>sslStream.AuthenticateAsServer(certificate, true, SslProtocols.Tls, true);
  </code></pre>
  
  <p><strong>Client code:</strong></p>
  
  <pre><code>sslStream.AuthenticateAsClient(hostName, certificates, SslProtocols.Tls12, true);
  </code></pre>
  
  <p><strong>Error:</strong></p>
  
  <p>Exception: A call to SSPI failed, see inner exception.</p>
  
  <p>Inner exception: The client and server cannot communicate, because they do not possess a common algorithm</p>
  
  <p><strong>Question:</strong></p>
  
  <p>When i change the SslProtocols to be same in client and server, i.e. TLS 1.0, SSL handshake is successful. 
  Why does the handshake fail when the SSL protocol is different on client and server?</p>