使用C#可以使用服务器名称指示(SNI)建立SSL连接吗?

Ton*_*nyM 12 c# ssl sni

我目前有这个代码,它与服务器建立SSL连接:

using (client = new TcpClient())
{

    client.Connect(Hostname, Port);
    var callback = new RemoteCertificateValidationCallback(ValidateServerCertificate);


    using (stream = new SslStream(client.GetStream(), false, callback))
    {
        stream.AuthenticateAsClient(Hostname);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不认为它支持SNI,因为从SNI配置的服务器返回了错误的证书.无论如何使用SNI进行SSL连接?

我正在使用.NET 2(如果需要,愿意升级).我使用的是Windows 7,但是如果可能的话,希望该软件可以在其他平台上运行,例如Windows 2008.

Fre*_*ord 2

所以总而言之,答案似乎是:不,没有办法让 TLS 连接使用 SNI :-(

我找不到任何与 SNI 建立 TLS 连接的 C# 示例代码。但理论上,应该可以手动创建它,即按照如何实现服务器名称指示(SNI)

然而,这里的尝试失败了:TLS SNI with C#