将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法是啥?

Posted

技术标签:

【中文标题】将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法是啥?【英文标题】:Easiest way to add SSL to a IOCP based windows server?将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法是什么? 【发布时间】:2010-12-16 15:36:15 【问题描述】:

我有一个基于 IOCP 的服务器,我们已经使用了很长时间。现在我们需要为此添加 SSL 支持。我正在努力寻找一个干净的解决方案。我在其他两个线程中发现了两个建议 -

1) 使用 openssl 内存 BIO - 但在网上没有找到任何与 IOCP 端口一起使用的示例,这些示例解释了由于 IOCP 的多线程性质而将出现的问题。 2) 将 Boost ASIO 与 ssl 一起使用——我认为它在内部使用 IOCP。但是没有示例显示如何存储每个连接状态数据 - 例如,在我们的服务器中,为每个连接的客户端存储状态信息,此状态信息用于识别客户端并相应地解析客户端发送的数据。

如果您能提出上述两个问题的解决方案或任何其他对您有用的解决方案,我将不胜感激。

更新:我正在使用 Simple C 在 winsock2 库中实现 IOCP。

最好的问候 尼拉德里

【问题讨论】:

请更新您的问题并描述您要求解决方案的平台和开发工具/编程语言。 【参考方案1】:

在这里查看我的答案:How do I use OpenSSL with WinSock?

我写了一篇文章,其中包含将 OpenSSL 与异步套接字一起使用的代码。文章的代码展示了 MFC 的异步套接字,但理论与 IOCP 相同。

我对文章中介绍的 OpenSSL 支持使用了一种设计变体,该支持可作为我基于 IOCP 的服务器框架的一部分提供;看这里:http://www.serverframework.com/products---the-ssltls-using-openssl-option.html

【讨论】:

以上是关于将 SSL 添加到基于 IOCP 的 Windows 服务器的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

一只会铲史的猫:我开发的软件一览

当服务器基于 iocp 时,我是不是需要让客户端支持 iocp?

IOCP 服务器并使用单个 wsasend 发送数据

一种 Windows IOCP 整合 OpenSSL 实现方案

一种 Windows IOCP 整合 OpenSSL 实现方案

一种 Windows IOCP 整合 OpenSSL 实现方案