openssl SSL_accept错误

时间:2012-06-13 10:16:22

标签: openssl

我需要让用户能够在SSL和非SSL通信之间切换。为此,SSL代码查找特定的命令包,关闭SSL内容并启动正常的TCP / IP通信。这很好用。但是,当我尝试重新启动所有内容以在SSL模式下运行时,我从SSL_accept收到-2错误。必须有一些我没有清理的东西,但是经过大量搜索清理建议之后我还没有找到它,所有这些都是我抛出的,如下所示:

    SSL_shutdown(ssl);
    SSL_CTX_free(ctx);
BIO_free(acc);
CONF_modules_unload(1);
OBJ_cleanup();
EVP_cleanup();
ENGINE_cleanup();
CRYPTO_cleanup_all_ex_data();
ERR_remove_state(0);
ERR_free_strings(); 

很难相信在那之后还有什么东西需要清理!

1 个答案:

答案 0 :(得分:0)

您应该发布更多代码,以确切了解您收到错误的方式。如果你使SSL_accept的SSL_get_error失败,你究竟收到了什么?

根据这些建议,我可以看到你正在进行BIO_free,有时可能会对基础BIO_METHOD进行处理,它可以关闭连接,我假设您正在重复使用它来进行下一次SSL_accept,可能是问题所在:

  

调用BIO_free()也可能对底层I / O结构产生一些影响,例如,它可能会关闭在某些情况下引用的文件。有关更多详细信息,请参阅各个BIO_METHOD描述。

来自BIO_free man

如果您想重复使用该连接,请检查BIO_pop here