我可以轻松地使用“win套接字”来实现HTTP,但是我一直在努力使用“SChannel”来实现HTTPS,而“至少对我来说”的文献很少。如何建立用于HTTPS通信的安全连接?我应该注意任何安全性或性能方面的考虑吗?
最佳答案
SChannel与Windows集成得很好,并允许您执行身份验证而无需询问用户的凭据。 Schannel的级别比HTTP低。它允许您打开安全的TCP连接(ssl套接字)。您需要实现自己的HTTP堆栈以发送HTTPS请求或查找库。要习惯Schannel,最好的起点是了解Microsoft的示例,该示例是客户端-服务器示例:
Client
Server
它们是非常简单的示例,但足以理解基础知识。
Curl使用Schannel已有一段时间了,您可以为练习https://github.com/curl/curl/blob/master/lib/vtls/schannel.c找到一些非常有用的代码。
安全是一个重要的话题,这就是Schannel的目的。您将继承操作系统的安全风险。 Microsoft通常会快速修补安全问题。如果仅针对Windows,则由于与Windows生态系统的深度集成,因此是一个不错的选择。例如,您不必像使用openssl一样部署自己的ssl证书,Schannel会自动读取系统证书。您还可以轻松实现NTLM和Kerberos身份验证,而无需要求提供凭据,Schannel将从运行您的软件的用户那里获取凭据句柄。总的来说,它是一个非常不错的库,据我所知,与其他SSL库相比,没有性能损失。它经过了良好的测试,并已部署到全局数百万台计算机上。