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.
We are using SHA256 certificate and Client is not able to negotiate with strict TLS 1.2. was getting "client and server cannot communicate, because they do not possess a common algorithm - SSLStream"
stream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls12, True);
Thanks to Steffen Ullrich for this answer which helped me troubleshoot further.
When we use SHA1 Certificate Client is able to successfully negotiate with TLS 1.2
from RFC
If the client does not send the signature_algorithms extension, the server MUST do the following:
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}.
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.
SHA256,SHA1 works fine with TLS 1.0
SHA1 works with strict TLS 1.2
SHA256 not working with strict TLS 1.2
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?