title: The client and server cannot communicate, because they do not possess a common algorithm on Windows Server 2008 Web
body: <p>I am working on a ASP.Net WebForms application. We are using <a href="https://github.com/payfort/start.net" rel="nofollow noreferrer">PayFort's Start API</a> for the payment process. The application is running fine on our local machine (Windows 10) but it shows following error when we try to make payment using their API on our deployment server (Windows Server Web 2008). </p>
  
  <blockquote>
    <p>The client and server cannot communicate, because they do not possess
    a common algorithm.</p>
  </blockquote>
  
  <p>The documentation on their webpage  (<a href="https://docs.start.payfort.com/guides/ssl/" rel="nofollow noreferrer">PayFort Start and SSL/TLS</a>) states that they use Tls1.2 for the communication. Their API already contains the code to use Tls1.2 as Security Protocol</p>
  
  <pre><code>ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
  </code></pre>
  
  <p>We've built the application on .Net framework 4.5 since <code>Tls1.2</code> only supported by .Net 4.5 or later. Needless to mention, our server has .Net Framework 4.5 installed in it. <br/> <br/>
  We've also added the registry values for Tls1.1 and Tls1.2 in the windows registry<br/> <br/>
  Using the <a href="https://www.ssllabs.com/ssltest/" rel="nofollow noreferrer">SSL Labs tool</a>, we've also confirmed that there are atleast two Cipher suites supported by both servers (our server and PayFort's API Server) (<a href="https://api.start.payfort.com" rel="nofollow noreferrer">https://api.start.payfort.com</a>) <br/><br/>
  <strong>Cipher suites supported by PayFort's API Server</strong>
  <a href="https://i.stack.imgur.com/Lxvvw.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Lxvvw.jpg" alt="Cipher suites supported by PayFort&#39;s API Server"></a>
  (Green outlined are those which are common with our server) <br/> <br/>
  <strong>Cipher Suites supported by our server</strong>
  <a href="https://i.stack.imgur.com/MzSyZ.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/MzSyZ.jpg" alt="Cipher Suites supported by our server"></a>
  <br/> <br/>
  I've also used the <a href="https://www.nartac.com/Products/IISCrypto" rel="nofollow noreferrer">Nartac IIS crypto software</a> and it's showing the following info as <code>Best Practices</code>
  <a href="https://i.stack.imgur.com/4JepM.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4JepM.jpg" alt="Nartac IIS crypto details"></a>
  <br/> <br/>
  I'm not sure if it has anything to do with the problem or not, but here are the details of the SSL certificate installed in our server <br/>
  <a href="https://i.stack.imgur.com/sbYiE.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sbYiE.jpg" alt="SSL certificate details"></a>
  <br/> <br/>
  Can anyone please point out that what we are doing wrong and what should we do in order to communicate with the desired server and make payment from the application deployed on our server as we are doing perfectly on our local machine.</p>