Игнорировать общее имя при проверке сертификата в openssl - PullRequest
0 голосов
/ 25 марта 2020

Мы пишем новое приложение сервер / клиент, и нам нужно проверить самозаверяющие сертификаты в OpenSSL 1.1.0, где поле CN не важно.

Я пытался сделать следующее, но это не так кажется, что эффект:

X509_VERIFY_PARAM *param = NULL;
param = SSL_get0_param(sslo.ssl);
X509_VERIFY_PARAM_set1_host(param, nullptr, 0);

Как я могу эффективно игнорировать все проверки этого поля?

Обновление после ответа Шейна:

I попытался установить verify_callback с SSL_CTX_set_verify. В обратном вызове я позвонил X509_STORE_CTX_get_error_depth. Получившийся код ошибки был X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT, что в соответствии с документацией означает, что «переданный сертификат самоподписан, и тот же сертификат не может быть найден в списке доверенных сертификатов».

Эта ошибка очень общая c и не относящиеся конкретно к CN, если я только изменю поле CN в сертификате на соответствующее значение, этого не произойдет.

1 Ответ

0 голосов
/ 26 марта 2020

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

Внимательно прочитайте эту страницу, и она должна рассказать вам все вам нужно знать, на странице также есть пример, на котором вы можете основывать свой обработчик, если вы будете sh.

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