【问题标题】:SChannel/SSL implementation?SChannel/SSL 实施?
【发布时间】:2016-03-10 21:50:39
【问题描述】:

我可以使用“win sockets”轻松实现 HTTP,但我一直在努力使用“SChannel”实现 HTTPS,“至少对我而言”文档记录很少。如何为 HTTPS 通信建立安全连接,是否有任何安全或性能注意事项需要注意?

【问题讨论】:

  • 你总是可以使用 WinInet/WinHTTP 来为你处理管道
  • @AlexK。 ,当然,但我想知道/学习如何使用 SChannel 实现它
  • @AlexK。除非它无缘无故地让你的应用崩溃。我们想要革命。
  • @AnArrayOfFunctions - 您希望将什么视为“详细的规范答案”?

标签: c++ winapi ssl winsock2 schannel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多