c++ - SChannel/SSL 实现?

标签 c++ winapi ssl winsock2 schannel

我可以轻松地使用“win sockets”实现 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 库相比,它没有性能损失。它经过良好测试并部署到全局数百万台机器上。

关于c++ - SChannel/SSL 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114163/

相关文章:

c++ - C++ 中的 IEnumerable?

c - 用 C 语言进行 Win32 API 控制台编程

c++ - 如何在子对话框中获取 wxFrame 指针

c++ - 如何更改 Shell_NotifyIcon 设置的系统托盘图标文本样式

windows - 如何在安装结束时以适当的权限启动可执行文件?

wordpress - 在 AWS EC2 ELB SSL 上运行 WordPress 时出现 503 错误

java - 将 http 更改为 https

java - Poodle 和 Websphere ESB/Process Server 尝试调用外部 TLS 服务

c++ - 在指针类型的类模板特化中没有调用匹配函数

c++ - 在 OSX 上替换 libstdc++.dylib (4.0) 全局新建和删除运算符