根据OpenSSL documentation,SSL_set_verify
和SSL_CTX_set_verify
看起来几乎完全相同。
使用Boost库,我无法判断/何时需要调用ssl::stream::set_verify_callback
与ssl::context::set_verify_callback
,因为流无论如何都会使用上下文。这些函数分别在引擎盖下调用SSL_set_verify
和SSL_CTX_set_verify
。
我何时需要为上下文而不是SSL流设置验证回调?
答案 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上下文。因此,在大多数情况下,仅在上下文中设置验证回调更有意义。