【发布时间】:2011-12-04 19:37:32
【问题描述】:
这个问题类似于 Starting to use OpenSSL 但更具体、更详细,所以我认为这样问是公平的。
假设我有一个简单的 http 服务器,它在成功的 GET 场景中执行以下操作
- 创建一个监听套接字
- 客户端连接
- 通过recv读取数据
- 解析 GET 请求,现在它知道要返回哪个资源
- 通过发送写入响应
- 关闭套接字
此服务器是在 linux 上用 c++ 编写的。
我的问题是,如何将此服务器转换为最小的 https 服务器? (特别是使用 OpenSSL,但一般意义上的答案是受欢迎的。)
这是我的理解(问号表示我不知道)
- 初始化库
- 读取服务器证书和私钥等配置
- 创建一个普通的监听套接字(?)
- 客户端连接
- 通过库函数进行握手 (?)
- 握手完成
- 在开始接收和发送数据之前是否需要一个特殊步骤?
- 通过库函数读取数据(?)
- 此时的数据看起来与 HTTP GET 完全一样吗?
- 如果是,则解析 GET 并获取资源
- 通过库函数写入返回数据(?)
- 通过库函数关闭连接(?)
总而言之,我希望它只需要在当前代码中添加一些额外的步骤,并且不会影响 HTTP 解析。这个假设正确吗?
非常感谢任何可以填补空白的人。
【问题讨论】:
-
一个最小的 SSL 服务器列在 [answer to question 7080958][1] [1]: stackoverflow.com/questions/7080958/…