SSL套接字免费并关闭

时间:2014-01-17 18:59:47

标签: c++ sockets ssl openssl file-descriptor

对于SSL连接,从接听电话收到的FD可以做些什么?可以重复使用吗?

我想知道的确切想知道的是:

接受连接后,我会收到FD。 我使用SSL*创建了一个SSL句柄(SSL_new)。 使用FDSSL_set_fd添加到此句柄。 我使用SSL_accept进行握手。 现在,如果我在SSL_shutdown上致电SSL*FD会被关闭吗?那么SSL_free呢?

如果上述问题的答案为否,那么我可以将FD与另一个SSL*一起使用吗?

要解释我想要的内容,如果我们使用句柄FD从连接SSL*读取一些数据,然后我们释放或关闭SSL*,我们是否可以从FD读取剩余数据{1}}使用新的SSL*

1 个答案:

答案 0 :(得分:5)

SSL_shutdown仅通过套接字发送关闭通知。如果你想在之后将套接字重用为普通套接字,你必须确保另一边也做了SSL_shutdown。此信息为您提供SSL_shutdown的返回码:如果为1,则SSL连接关闭,如果为0,则应再次调用SSL_shutdown,等待来自对等方的关闭通知。有关详细信息,请参阅SSL_shutdown文档。

完成此操作后,您可以继续将套接字用作普通套接字。这是通过FTP(ftps)在SSL中完成的,例如使用“AUTH TLS”,连接将升级为SSL,使用“CCC”,它将再次降级为纯文本。

SSL_free只释放与SSL对象关联的内存,它不会更改套接字上的任何内容,也不会发送/接收任何数据。