Server Name Indication from C#

前端 未结 2 1151

As far as I can tell, there seems to be a big limitation in .NET in that there is no way using C# and .NET to make an TLS connection that uses Server Name Indication (SNI).

2条回答
  •  星月不相逢
    2021-01-18 07:55

    In my .Net 4.5 project the following fails for a server using SNI:

    var url = "https://www.somesite.com";
    System.Net.WebClient client = new System.Net.WebClient();
    client.Encoding = Encoding.UTF8;
    var data = client.DownloadString(url);
    

    But it works if explicitly specifying TLS1.2 by prefixing it with:

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    

    The same applies to webrequest:

    WebRequest request = WebRequest.Create("https://www.somesite.com");
    

    and HttpRequestMessage:

    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "https://www.google.com");
    

    They all need the protocol explicitly set to TLS 1.2 to work with an SNI server (this may have changed in newer .Net versions)

提交回复
热议问题