title: Make server use SHA256 even if Client does not send Signature Algorithm in the request
body: <p>Am using a .net application where the client connects to our server using TCP SSL Stream. Application is using .net 4.5 and running as a windows service in Windows server 2012 R2.</p>
  
  <p>We are using SHA256 certificate and Client is not able to negotiate with strict TLS 1.2. was getting <strong>"client and server cannot communicate, because they do not possess a common algorithm - SSLStream"</strong></p>
  
  <pre><code>stream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls12, True);
  </code></pre>
  
  <p>Thanks to <a href="https://stackoverflow.com/a/49658980/1481690">Steffen Ullrich</a> for this answer which helped me troubleshoot further.</p>
  
  <p>When we use SHA1 Certificate Client is able to successfully negotiate with TLS 1.2</p>
  
  <p>from RFC</p>
  
  <blockquote>
    <p>If the client does not send the signature_algorithms extension, the
    server MUST do the following:</p>
    
    <p>If the negotiated key exchange algorithm is one of (RSA, DHE_RSA,
    DH_RSA, RSA_PSK, ECDH_RSA, ECDHE_RSA), behave as if client had sent
    the value {sha1,rsa}.</p>
  </blockquote>
  
  <p>My client is supporting SHA256 but they are not sending signature algorithm as part of the TLS 1.2 request and server by default negotiates with SHA1 and not SHA256.</p>
  
  <pre><code>SHA256,SHA1 works fine with TLS 1.0
  SHA1 works with strict TLS 1.2
  SHA256 not working with strict TLS 1.2
  </code></pre>
  
  <p>So my question Is there a way i can make the server to negotiate using SHA256 also even if my client does not send signature algorithm?</p>