SChannel/SSL实现?

7

我可以轻松地使用“win sockets”实现HTTP,但我一直在努力使用“SChannel”实现HTTPS,这对我来说几乎没有文档说明。我应该如何建立安全的HTTPS通信连接,并且有哪些安全或性能方面的注意事项需要注意?


3
您可以始终使用WinInet/WinHTTP,它们会为您处理底层细节。 - Alex K.
2
@AlexK.,当然,但我想知道/学习如何使用SChannel实现它。 - M.U
1
@AlexK。除非它无缘无故地崩溃了你的应用程序,否则我们要革命。 - AnArrayOfFunctions
@AnArrayOfFunctions - 你想看到什么样的“详细规范答案”? - Simon Mourier
可能是可编译的C++代码,使用MS SSPI实现安全的SLL/TLS客户端的重复问题。 - AnArrayOfFunctions
1个回答

7
SChannel与Windows的集成非常好,它允许您在不要求用户凭证的情况下执行身份验证。SChannel工作在比HTTP更低的级别上。它允许您打开安全tcp连接(ssl套接字)。您需要实现自己的HTTP堆栈以发送HTTPS请求或查找一个库。为了熟悉SChannel,最好的起点是理解微软的示例,其中包括客户端-服务器示例: 客户端 服务器
这些示例非常简单,但足以理解基础知识。
Curl已经使用SChannel一段时间了,您可以在https://github.com/curl/curl/blob/master/lib/vtls/schannel.c中找到一些非常有用的代码进行演练。
安全性是一个重要的话题,这也是SChannel的目的。您将继承操作系统的安全风险。微软通常会快速修补安全问题。如果您只针对Windows进行开发,则SChannel是一个不错的选择,因为它与Windows生态系统深度集成。例如,您不必像使用openssl那样部署自己的ssl证书,SChannel会自动读取系统证书。您还可以轻松实现NTLM和Kerberos身份验证,而无需要求凭据,SChannel将从运行您软件的用户处获取凭据句柄。总的来说,它是一种相当好的库,据我所知,与其他SSL库相比没有性能损失。它已经经过了充分的测试并部署在全球数百万台机器上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接