es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

libcurl habilitado para HTTPS pero no se puede utilizar.

Para nuestro proyecto construimos libcurl desde cero utilizando CMake. El archivo libcurl-configure-out.log me dice que está habilitado el uso de HTTPS (entre otras cosas), aquí está la parte importante al respecto:

— Funciones habilitadas: SSL IPv6 unixsockets AsynchDNS Largefile alt-svc HSTS NTLM HTTPS-proxy

— Protocolos habilitados: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS LDAP MQTT POP3 POP3S RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP

— Implementaciones de SSL habilitadas: OpenSSL

Pero cuando intento establecer una versión de TLS en nuestro código, muestra el mensaje “CURLE_NOT_BUILT_IN”

const CURLcode state = curl_easy_setopt(this->m_curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
// state == 4 aka "CURLE_NOT_BUILT_IN"

También intenté verificarlo a través del ejecutable de curl, lo cual me da una impresión similar

C:\\build\exlibcurl-prefix\src\exlibcurl-build\src\Debug>curl.exe –version

curl 7.80.0 (Windows) libcurl/7.80.0 libssh2/1.10.0

Release-Date: 2021-12-10

Protocolos: dict file ftp gopher http imap ldap mqtt pop3 rtsp scp sftp smb smtp telnet tftp

Funciones: AsynchDNS HSTS IPv6 Largefile NTLM UnixSockets alt-svc

¿En qué me equivoqué?

Editar: Algunas partes adicionales sobre la habilitación de SSL:

— Encontrado OpenSSL: optimizado;C:/Program Files/OpenSSL-Win64/lib/VC/libcrypto64MD.lib;debug;C:/Program Files/OpenSSL-Win64/lib/VC/libcrypto64MDd.lib (versión encontrada “3.0.0”)

— Buscando openssl/crypto.h

— Buscando openssl/crypto.h – encontrado

— Buscando cldapopen en wldap32;winmm;ws232;OpenSSL::SSL;OpenSSL::Crypto

— Buscando cldapopen en wldap32;winmm;ws232;OpenSSL::SSL;OpenSSL::Crypto – encontrado

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que aunque HTTPS y OpenSSL estuvieran habilitados durante la construcción de libcurl, la versión SSL que estás tratando de configurar no está construida en él. Esto podría ser debido a algunas razones:

    1. La versión de curl que estás utilizando no está compilada con soporte para la versión de TLS que estás tratando de configurar.
    2. La versión de libcurl que estás utilizando no fue construida con soporte para la versión de TLS que estás tratando de configurar.

    3. Puede haber una discrepancia entre la versión de libcurl y curl que tienes instaladas.

    Para resolver este error, puedes intentar actualizar a una versión más reciente de curl y libcurl que admita la versión de TLS que deseas utilizar. Alternativamente, puedes construir libcurl con soporte para la versión de TLS agregando la opción adecuada a tu comando de cmake (por ejemplo, -DCMAKE_USE_OPENSSL=ON). Asegúrate de reconstruir y reinstalar libcurl después de realizar cualquier cambio en tus opciones de cmake.

Comments are closed.