Bezdepbonusu7Программирование: статьи и ответы

Вопрос

SSL_CTX_set_cert_verify_callback против SSL_CTX_set_verify

Автор вопроса: BreakPointОтветов: 2

Может ли кто-нибудь сказать мне, в чем разница между SSL_CTX_set_cert_verify_callback и SSL_CTX_set_verify? Из документов OpenSSL:

SSL_CTX_set_cert_verify_callback() устанавливает функцию обратного вызова проверки для ctx. Объекты SSL, созданные из ctx, наследуют настройку, действующую на момент вызова SSL_new(3).

и:

SSL_CTX_set_verify() устанавливает флаги проверки для ctx в режим и указывает используемую функцию verify_callback. Если функция обратного вызова не должна быть указана, указатель NULL может использоваться для verify_callback.

Итак, я пытаюсь понять, какой обратный вызов отправлять для каждого из них (со стороны клиента).

Спасибо эксперты.

sslopensslcallbackhandshaking

Ответы

Ответ 1 · рейтинг 10 · David Gelhar

SSL_CTX_set_cert_verify_callback() означает, что вы указываете функцию для выполнения всего процесса проверки (проходя по цепочке сертификатов, проверяя каждый сертификат по очереди). [вы, вероятно, не хотите этого делать, согласно предупреждению ниже]

SSL_CTX_set_verify(), с другой стороны, указывает функцию, которая вызывается, когда валидатор по умолчанию проверяет каждый сертификат, с preverify_ok, установленным на 0 или 1, чтобы указать, сработала ли проверка рассматриваемого сертификата.

Из документа для SSL_CTX_set_cert_verify_callback()

ПРЕДУПРЕЖДЕНИЯ

Не смешивайте обратный вызов проверки, описанный в этой функции, с функцией verify_callback, вызываемой в процессе проверки. Последний устанавливается с помощью семейства функций SSL_CTX_set_verify(3).

Предоставление полной процедуры проверки, включая настройки назначения сертификата и т. д., является сложной задачей. Встроенная процедура достаточно мощная, и в большинстве случаев достаточно изменить ее поведение с помощью функции verify_callback.

Ответ 2 · рейтинг 3 · ZZ Coder

SSL_CTX_set_cert_verify_callback() изменяет функцию проверки сертификата по умолчанию. Вам, вероятно, не следует этого делать. Это довольно сложно, вам нужно проверить подпись для каждого сертификата, проверить цепочку, возможно, проверить CRL. Это самая сложная часть SSL.

SSL_CTX_set_verify() используется для установки режима SSL. Если выбран режим SSL_VERIFY_PEER (двусторонний SSL), вы также должны установить обратный вызов в этой функции для дальнейшей проверки сертификата клиента (проверка CN по белому списку и т. д.). Для других режимов этот CB не используется. Поскольку вы сказали, что находитесь в клиентском режиме, вам, вероятно, не нужно беспокоиться об этом вызове.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы