Проверка сертификата с помощью BIO_do_connect () - PullRequest
0 голосов
/ 19 марта 2020

Проводится ли проверка сертификата во время вызова BIO_do_connect?

Я пытаюсь понять, когда использовать ssl_get_verify_result(). В документации сказано, что эту функцию следует использовать вместе с ssl_get_peer_certificate. Но некоторые примеры (например, IBM ) не говорят, что OpenSSL выполняет проверку за нас. Они звонят ssl_get_verify_result() только после BIO_do_connect.

Я вижу, что BIO_do_connect на самом деле является макросом:

/* BIO_s_accept() and BIO_s_connect() */
#  define BIO_do_connect(b)       BIO_do_handshake(b)
#  define BIO_do_accept(b)        BIO_do_handshake(b)
# endif /* OPENSSL_NO_SOCK */

# define BIO_do_handshake(b)     BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)

Итак, я понимаю, что BIO_do_connect на самом деле не проверяет, отправил ли сервер сертификат. Если сервер отправляет сертификат, ssl_get_verify_result будет использовать его для проверки. Если он не отправляет, то ssl_get_verify_result все еще возвращает X509_V_OK. Вот почему нам нужно позвонить ssl_get_peer_certificate, чтобы убедиться, что сертификат действительно отправлен. Это правильно?

1 Ответ

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