何时调用SSL_set_verify与SSL_CTX_set_verify
When to call SSL_set_verify vs SSL_CTX_set_verify
根据OpenSSL文档,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流设置验证回调?
每个连接都可以有自己的ssl
对象,而它们都是从一个ctx
对象继承的。你可以在这里看到区别。通常倾向于创建一个ctx
,并将其用于所有TLS连接。在该模型中,您可以使用这两个选项全局控制验证选项或在单个连接级别控制验证选项。
因此,不同之处在于SSL_CTX_set_verify
为从给定ctx
派生的所有ssl
对象设置验证模式,而SSL_set_verify((只影响它调用的ssl
对象
通常您的代码中有一个通用的验证函数,而不是一个特定于单个SSL会话的验证函数。而且您经常在多个SSL会话之间共享相同的SSL上下文。因此,在大多数情况下,只在上下文上设置验证回调更有意义。
相关文章:
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- std::set 是否将对象连续存储在内存中?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- google test PrintTo for std::set<std::string>