SSL_CTX_set_cert_verify_callback против SSL_CTX_set_verify - PullRequest
9 голосов
/ 28 апреля 2010

Может кто-нибудь сказать мне, в чем разница между 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 в режим mode и задает функцию verify_callback, которая будет использоваться. Если функция обратного вызова не указана, указатель NULL может использоваться для verify_callback.

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

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

Ответы [ 2 ]

9 голосов
/ 28 апреля 2010

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

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

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

1008 * ВНИМАНИЕ *

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

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

3 голосов
/ 28 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...