5

我可以使用“win sockets”轻松实现 HTTP,但我一直在努力使用“SChannel”实现 HTTPS,“至少对我而言”记录得很少。如何为 HTTPS 通信建立安全连接,我应该注意哪些安全或性能注意事项?

4

1 回答 1

4

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 库相比,它没有性能损失。它经过良好测试并部署到全球数百万台机器上。

于 2019-05-31T17:33:39.850 回答