这个问题与开始使用OpenSSL类似,但更具体和详细,所以我认为问一下是公平的。
假设我有一个简单的HTTP服务器,在成功的GET场景中执行以下操作:
- 创建一个侦听套接字 - 客户端连接 - 通过recv读取数据 - 解析GET请求,现在它知道要返回哪个资源 - 通过send写入响应 - 关闭套接字
这个服务器是在Linux上用C ++编写的。
我的问题是,将此服务器转换为最小的HTTPS服务器需要什么?(特别是使用OpenSSL,但一般意义上的答案也可以。)
以下是我的理解(问号表示我不知道):
- 初始化库 - 读取服务器证书、私钥和其他配置 - 创建一个普通的侦听套接字(?) - 客户端连接 - 通过库函数进行握手(?) - 握手完成 - 在开始接收和发送数据之前,是否需要特殊步骤? - 通过库函数读取数据(?) - 此时数据看起来是否完全像HTTP GET? - 如果是,解析GET并获取资源 - 通过库函数写回数据(?) - 通过库函数关闭连接(?)
总之,我希望它只需要在当前代码中添加一些额外的步骤,并且不影响HTTP解析。这个假设是正确的吗?
非常感谢能填补空白的任何人。
假设我有一个简单的HTTP服务器,在成功的GET场景中执行以下操作:
- 创建一个侦听套接字 - 客户端连接 - 通过recv读取数据 - 解析GET请求,现在它知道要返回哪个资源 - 通过send写入响应 - 关闭套接字
这个服务器是在Linux上用C ++编写的。
我的问题是,将此服务器转换为最小的HTTPS服务器需要什么?(特别是使用OpenSSL,但一般意义上的答案也可以。)
以下是我的理解(问号表示我不知道):
- 初始化库 - 读取服务器证书、私钥和其他配置 - 创建一个普通的侦听套接字(?) - 客户端连接 - 通过库函数进行握手(?) - 握手完成 - 在开始接收和发送数据之前,是否需要特殊步骤? - 通过库函数读取数据(?) - 此时数据看起来是否完全像HTTP GET? - 如果是,解析GET并获取资源 - 通过库函数写回数据(?) - 通过库函数关闭连接(?)
总之,我希望它只需要在当前代码中添加一些额外的步骤,并且不影响HTTP解析。这个假设是正确的吗?
非常感谢能填补空白的任何人。