callback openssl ssl handshaking

SSL_CTX_set_cert_verify_callback vs. SSL_CTX_set_verify



openssl handshaking (2)

SSL_CTX_set_cert_verify_callback () cambia la función de verificación de certificado predeterminada. Probablemente no deberías hacer esto. Es bastante complicado, necesita verificar la firma de cada certificado, verificar la cadena, posiblemente verificar CRL. Es la parte más complicada del SSL.

SSL_CTX_set_verify () se utiliza para establecer el modo de SSL. Si el modo es SSL_VERIFY_PEER (SSL bidireccional), también debe establecer una devolución de llamada en esta función para verificar aún más el certificado del cliente (verificando el CN ​​con una lista blanca, etc.). Para otros modos, este CB no se usa. Como dijiste que estás en modo cliente, probablemente no necesites preocuparte por esta llamada.

¿Alguien puede decirme cuál es la diferencia entre SSL_CTX_set_cert_verify_callback y SSL_CTX_set_verify? De los documentos de OpenSSL:

SSL_CTX_set_cert_verify_callback () establece la función de devolución de llamada de verificación para ctx. Los objetos SSL que se crean a partir de ctx heredan la configuración válida en el momento en que se llama a SSL_new (3).

y:

SSL_CTX_set_verify () establece los indicadores de verificación para que ctx sea el modo y especifica la función verify_callback que se utilizará. Si no se especifica ninguna función de devolución de llamada, el puntero NULL se puede usar para verify_callback.

Así que estoy tratando de entender qué devolución de llamada enviar para cada uno (desde el lado del cliente).

Gracias expertos


SSL_CTX_set_cert_verify_callback () significa que está especificando una función para hacer todo el proceso de validación (recorriendo la cadena de certificados validando cada certificado por turno). [es probable que no quieras hacer esto, según la siguiente advertencia]

SSL_CTX_set_verify (), por otro lado, especifica una función a la que se llama cuando el validador predeterminado verifica cada certificado, con preverify_ok establecido en 0 o 1 para indicar si la verificación del certificado en cuestión funcionó.

Del documento de SSL_CTX_set_cert_verify_callback ()

ADVERTENCIAS

No mezcle la devolución de llamada de verificación descrita en esta función con la función verify_callback invocada durante el proceso de verificación. Este último se establece utilizando la familia de funciones SSL_CTX_set_verify (3).

Proporcionar un procedimiento de verificación completo que incluya la configuración del propósito del certificado, etc. es una tarea compleja. El procedimiento incorporado es bastante potente y, en la mayoría de los casos, debería ser suficiente para modificar su comportamiento utilizando la función verify_callback.