#c #ssl #boost #openssl #boost-asio
#c #ssl #повышение #openssl #boost-asio
Вопрос:
Согласно документации OpenSSL, оба SSL_set_verify
и SSL_CTX_set_verify
, похоже, делают практически одно и то же.
Используя библиотеки Boost, я не могу сказать, нужно ли / когда мне вызывать ssl::stream::set_verify_callback
versus ssl::context::set_verify_callback
, поскольку поток в любом случае использует контекст. Функции вызывают SSL_set_verify
и SSL_CTX_set_verify
, соответственно, под капотом.
Когда мне нужно установить обратный вызов проверки для контекста вместо потока SSL?
Ответ №1:
Каждое соединение может иметь свой собственный ssl
объект, в то время как все они наследуются от одного ctx
объекта. Вы можете увидеть разницу здесь. Обычно создается один ctx
и используется один и тот же для всех соединений TLS. В этой модели вы можете управлять параметрами проверки глобально или на уровне отдельного соединения с помощью двух параметров.
Таким образом, разница заключается в том, что SSL_CTX_set_verify
устанавливает режим проверки для всех ssl
объектов, производных от данного ctx
, тогда как SSL_set_verify() влияет только на ssl
объект, на котором он вызывается.
Ответ №2:
Обычно в вашем коде есть общая функция проверки, а не какая-то конкретная для отдельных сеансов SSL. И часто вы используете один и тот же контекст SSL между несколькими сеансами SSL. Поэтому в большинстве случаев имеет смысл устанавливать обратный вызов проверки только для контекста.