SChannel / SSL实施?

M.U*_*M.U 5 c++ ssl winapi schannel winsock2

我可以轻松地使用“ win套接字”来实现HTTP,但是我一直在努力使用“ SChannel”来实现HTTPS,而“至少对我来说”的文献很少。如何建立用于HTTPS通信的安全连接,我应该注意任何安全性或性能方面的考虑吗?

geo*_*eok 7

SChannel 与 Windows 集成得很好,允许您执行身份验证而无需询问用户的凭据。Schannel 的工作级别比 HTTP 低。它允许您打开安全的 TCP 连接(ssl 套接字)。您需要实现自己的 HTTP 堆栈来发送 HTTPS 请求或查找库。要习惯 Schannel,最好的起点是了解 Microsoft 的示例,这是一个客户端-服务器示例:

客户

服务器

它们是非常简单的示例,但足以理解基础知识。

Curl 使用 Schannel 一段时间了,您可以找到一些对您的练习非常有用的代码https://github.com/curl/curl/blob/master/lib/vtls/schannel.c

安全是一个大话题,这也是 Schannel 的目的。您将继承操作系统的安全风险。微软通常会快速修复安全问题。如果您仅针对 Windows,那么它是一个不错的选择,因为它与 Windows 生态系统深度集成。例如,您不必像使用 openssl 那样部署自己的 ssl 证书,Schannel 将自动读取系统证书。您还可以轻松实施 NTLM 和 Kerberos 身份验证,而无需请求凭据,Schannel 将从运行您的软件的用户那里获取凭据句柄。总的来说,它是一个非常好的库,据我所知,与其他 SSL 库相比,它没有性能损失。它经过充分测试并部署到世界各地数百万台机器上。