title: HTTP Web Request TLS 1.3 with C# .NET Core 3.1 exception "The client and server cannot communicate, because they do not possess a common algorithm."
body: <p>When attempting a web request to a site which requires TLS 1.3 <a href="https://shop.claytonengineering.com/" rel="nofollow noreferrer">https://shop.claytonengineering.com/</a>.  I'm receiving the following exception on &quot;request.GetResponse();&quot;.</p>
  <p>Exception: The SSL connection could not be established, see inner exception.
  Inner Exception: The client and server cannot communicate, because they do not possess a common algorithm.</p>
  <p>From Google Chrome Developer tools Security tab - &quot;The connection to this site is encrypted and authenticated using TLS 1.3, X25519, and AES_128_GCM.&quot;</p>
  <p>Any ideas on how to get this request to work?</p>
  <pre><code>HttpWebResponse response = null;
  
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&quot;https://shop.claytonengineering.com/&quot;);
  
  request.KeepAlive = true;
  request.Headers.Add(&quot;Upgrade-Insecure-Requests&quot;, @&quot;1&quot;);
  request.UserAgent = &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36&quot;;
  request.Headers.Add(&quot;Sec-Fetch-Mode&quot;, @&quot;navigate&quot;);
  request.Headers.Add(&quot;Sec-Fetch-User&quot;, @&quot;?1&quot;);
  request.Accept = &quot;text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3&quot;;
  request.Headers.Add(&quot;Sec-Fetch-Site&quot;, @&quot;same-origin&quot;);
  
  request.Headers.Set(HttpRequestHeader.AcceptEncoding, &quot;gzip, deflate, br&quot;);
  request.Headers.Set(HttpRequestHeader.AcceptLanguage, &quot;en-US,en;q=0.9&quot;);
  
  ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
  
  response = (HttpWebResponse)request.GetResponse();
  
  string html = null;
  
  using (StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
  {
      html = stream.ReadToEnd();
  }
  </code></pre>