如何使用Schannel API添加SNI客户端hello扩展?

时间:2015-05-11 10:35:08

标签: ssl sni schannel

我正在尝试将SNI添加到使用Microsoft SDK的Schannel API for TLS的客户端程序(C / C ++)中。

我到处搜索但找不到有关Schannel如何支持SNI扩展的任何文档。 我查看了AcquireCredentialsHandle()InitializeSecurityContext()的文档,但没有成功。

那么,有人可以帮我一些示例代码吗?

1 个答案:

答案 0 :(得分:0)

SNI被指定为part of the ClientHello,由InitializeSecurityContext()生成。具体而言,Schannel使用该函数的第3个参数进行证书验证,也称为SNI;但并非所有版本的Windows都支持TLS扩展(包括SNI)。

TLS扩展首先在Internet Explorer 7 beta 3 on Windows Vista中引入。此外,即使您的操作系统支持它,TLS也可能是turned off, by default

有一个working example on CodeProject显示来自客户端和服务器端的SNI。