SSL握手错误:会话ID上下文未初始化

时间:2016-07-29 12:08:35

标签: c++ ssl boost openssl boost-asio

我正在编写使用 boost :: asio 的服务器应用程序,以及通过与 boost :: asio 集成的 libssl 。当有传入连接时,第一次握手成功,但在连接断开并且客户端再次尝试连接之后,握手失败并显示错误:

  

会话ID上下文未初始化

在初始化SSL上下文时,

Here提出了使用 SSL_OP_NO_TICKET 选项的解决方案。我是按照以下方式使用它的:

m_sslContext.set_options(SSL_OP_NO_TICKET);

在开始时这解决了问题,但现在尽管仍然设置了选项,但错误再次出现。有没有人知道可以用这个问题做些什么呢?

2 个答案:

答案 0 :(得分:0)

我发现当问题出现时,我仍然有一个旧的连接到同一个远程端点,尝试再次连接。当我正确地删除旧连接时,问题就消失了。

答案 1 :(得分:-1)

启用客户端证书验证时出现完全相同的错误。 解决方案是为每个连接创建单独的ssl_context,这与boost.asio示例不同。 需要注意的一件事是,在我看来,SSL流关闭从未完成,它会无限期地挂起。也许是因为客户端未正确实现它。