c++ - significa - tag costanera norte sucursales
Problema al obtener la descripción del error después de que SSL_CTX_new haya devuelto NULL (2)
Soy muy nuevo en SSL. De hecho, diría que no sé nada al respecto.
Estoy usando el método "SSL_CTX_new" para crear un objeto SSL_CTX. El método devuelve null. La documentación dice que puedo verificar la pila de errores para obtener la causa de esto.
Así que tengo la función "int SSL_get_error (SSL * s, int ret_code)" que (según tengo entendido) debo usar para obtener el mensaje de error. la documentación del método no dice nada sobre el primer parámetro de la función. Solo dice que el segundo parámetro ("ret") debe ser igual al código de retorno de la operación fallida, que puede ser cualquiera de los siguientes:
SSL_connect (), SSL_accept (), SSL_do_handshake (), SSL_read (), SSL_peek () o SSL_write ()
Entonces ahora estoy teniendo dos problemas. La primera es que no utilicé ninguna de esas funciones, sino que uso SSL_CTX_new que no devuelve ningún tipo de código de retorno (devuelve un puntero al objeto SSX_CTX). Así que no sé qué poner como el "ret" parámetro. El segundo problema es que no sé qué significa el primer parámetro y qué debería poner allí, porque el documento no dice nada al respecto.
Necesita un contexto válido para crear el objeto SSL.
Como no puede crear un contexto, no puede usar SSL_get_error.
Intenta usar ERR_print_errors para ver qué salió mal
#include "openssl/err.h"
...
SSL_CTX * ctx = SSL_CTX_new(....);
if(!ctx) {
ERR_print_errors_fp(stderr);
//throw or return an error
}
Acabo de leer los documentos SSL. Si necesita obtener programáticamente el código de error / cadena de error, debe usar las funciones ERR_get_error y ERR_error_string.
Según http://www.mail-archive.com/[email protected]/msg51543.html , es posible que te falte una llamada a SSL_library_init()
. Agregar esto antes de la llamada SSL_CTX_NEW (..) solucionó el problema de valor NULL para mí.