Когда вызывать SSL_set_verify вместо SSL_CTX_set_verify

#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. Поэтому в большинстве случаев имеет смысл устанавливать обратный вызов проверки только для контекста.