何时调用SSL_set_verify与SSL_CTX_set_verify

时间:2016-10-20 21:46:14

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

根据OpenSSL documentationSSL_set_verifySSL_CTX_set_verify看起来几乎完全相同。

使用Boost库,我无法判断/何时需要调用ssl::stream::set_verify_callbackssl::context::set_verify_callback,因为流无论如何都会使用上下文。这些函数分别在引擎盖下调用SSL_set_verifySSL_CTX_set_verify

我何时需要为上下文而不是SSL流设置验证回调?

2 个答案:

答案 0 :(得分:2)

每个连接都可以拥有自己的ssl对象,而它们都可以从一个ctx对象继承。你可以在这里看到差异。一个人通常倾向于创建一个ctx并对所有TLS连接使用相同的SSL_CTX_set_verify。在此模型中,您可以使用这两个选项全局或在单个连接级别控制验证选项。

因此,不同之处在于ssl为从给定ctx派生的所有ssl对象设置验证模式,而SSL_set_verify()仅影响调用它的word-wrap: break-word;对象上。

答案 1 :(得分:1)

通常,您的代码中有一个通用验证功能,而不是一个特定于单个SSL会话的功能。通常,您在多个SSL会话之间共享相同的SSL上下文。因此,在大多数情况下,仅在上下文中设置验证回调更有意义。