curl: (1) Protocolo https no compatible o deshabilitado en libcurl

162

Estoy tratando de instalar los entornos Rails en Ubuntu 11.04. Cuando ejecuto el comando, rvm install 1.9.2 --with-openssl-dir=/usr/localse recibe el siguiente error:

curl : (1) Protocol https not supported or disabled in libcurl

¿Como puede ésto ser resuelto?

Giuseppe Di Federico
fuente
¿Qué sucede si no usa --with-openssl-dir=/usr/local(es decir, simplemente rvm install 1.9.2)?
Omri Barel
el mismo problema, pensé que --con ... era una solución alternativa
Giuseppe Di Federico
1
Me resulta difícil creer que su curl no sea compatible con HTTPS. Es posible que rvm venga con su propio curl o que no haya instalado curl ( sudo apt-get install curl). Intente curl -o "google.html" https://google.comverificar si HTTPS es compatible.
Omri Barel
Tengo el mismo mensaje de error con RCurl.
isomorfismos
Sorprendido, no hay una respuesta aceptada en este caso.
jbrahy

Respuestas:

295

Obtuve la respuesta AQUÍ para Windows, dice allí que:

curl -XPUT 'http://localhost:9200/api/twittervnext/tweet'

Woops, primer intento y ya un error:

curl: (1) Protocol 'http not supported or disabled in libcurl

La razón de este error es un poco estúpida, a Windows no le gusta cuando usa comillas simples para los comandos . Entonces el comando correcto es:

curl XPUT "http://localhost:9200/api/twittervnext/tweet"
cnlevy
fuente
2
use curl.haxx.se/latest.cgi?curl=win64-ssl-sspi cURL habilitado para Windows en su lugar si ninguna de las otras respuestas proporcionadas funciona para Windows.
ganesh
66
esto es correcto, y solo para agregar un poco de sal, si realmente desea usar las comillas dobles en la cadena que está citando, entonces necesita escapar de ellas, por ejemplo: en curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"lugar de curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... tome nota del doble simple y sin escape citas en la parte incorrecta.
Emmanuel Mahuni
@ EmmanuelMahuni Gracias por la pista. Me encontraba con el mismo problema al intentar CURLAR desde la tubería de bitbucket, mi valor incluye comillas dobles (") (ya que estoy leyendo la respuesta de json de aws cli usando jq), una vez después de eliminar el doble de inicio y fin. . trabajado para mí aquí es cómo lo hice. new_url=$( echo $url | tr -d \" )
Appu mistrio
1
¡Me acabas de salvar MUCHO tiempo! ¡Gracias!
Richard Varno
1
Tener el mismo efecto con curl en macOS.
not2savvy
82

Me encontré con este problema y resultó que había un espacio antes del httpsque estaba causando el problema. " https://"vs"https://"

jbrahy
fuente
66
Y tengo lo mismo. Me sorprendió por qué demonios estoy recibiendo este error. :) +1 por compartir esto.
Awais Qarni
3
Similar para mí, fue una comilla simple porque habíamos envuelto un valor por defecto bash con comilla simple a pesar de que no era necesario ...
Mathieu Dumoulin
1
Es sorprendente que aparentemente haya sido un problema para tanta gente, incluido yo mismo. Esto sucede de vez en cuando, pero parece un poco oscuro. Ah bueno. Gracias
dgo
1
Ese fue el problema para mí. Gracias @ jbrahy
colecmc
1
Sí, tengo lo mismo. Al eliminar el espacio, funcionó bien para mí.
Amandeep kaur
21

Parece que ya hay tantas respuestas, pero el problema que enfrenté fue con comillas dobles. Hay una diferencia entre:

y

"

Cambiar la primera comilla doble por la segunda funcionó para mí, a continuación se muestra el rizo de muestra:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"
Pavan_Obj
fuente
Claro que mi hombre.
Pavan_Obj
Este solucionó mi problema.
Hari Ennekat
Me alegro de que haya solucionado :).
Pavan_Obj
11

Encontré el mismo problema al intentar instalar rvm para ruby. Encontré la solución: después de extraer curl (tar) en la carpeta de descargas de root.

cd /root/Downloads/curl # step-1
./configure --with-ssl # step-2
make # step-3
make install # step-4 (if not root, use sudo before command)

fuente

RT
fuente
9

Resolvió este problema con la bandera --with-darwinssl

Ir a la carpeta con código fuente curl

Descárguelo aquí https://curl.haxx.se/download.html

sudo ./configure --with-darwinssl
make
make install

reinicie su consola y listo!

Максим Мартынов
fuente
8

Esto se menciona específicamente en la entrada de preguntas frecuentes de libcurl " Protocolo xxx no compatible o deshabilitado en libcurl ".

Para su placer, también incluyo la explicación aquí:

Al pasar una URL para su uso, puede responder que el protocolo en particular no es compatible o está deshabilitado. La forma particular en que se formula este mensaje de error es porque curl no distingue internamente si un protocolo en particular no es compatible (es decir, nunca se agregó ningún código que sepa cómo pronunciar ese protocolo) o si se deshabilitó explícitamente. curl se puede construir para admitir solo un conjunto de protocolos dado, y el resto se deshabilitaría o no se admitiría.

Tenga en cuenta que este error también se producirá si pasa una parte del protocolo mal escrita como en "htpt: //example.com" o como en el caso menos evidente si antepone la parte del protocolo con un espacio como en " http: // ejemplo .com / ".

Daniel Stenberg
fuente
10
No creo que esta respuesta explique al OP lo que debe hacer para solucionar el problema.
isomorfismos
3
explica lo que significa el mensaje, lo que implica que su línea de comando no fue suficiente para construir libcurl con HTTPS habilitado
Daniel Stenberg
Me mordió el prefijo espacial. Si solo el error lee 'Protocolo "xxx" no es compatible o está deshabilitado en libcurl'
topher
8

En mi caso, el protocolo HTTPS no era compatible con libcurl en primer lugar. Para averiguar qué protocolos son compatibles y cuáles no, verifiqué la versión curl con el comando:

curl --version

Proporcionó la siguiente información: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocolos: archivo dict ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Características: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

donde el protocolo https no es compatible.

Luego reinstalé curl y lo instalé usando los siguientes comandos (después de desempaquetar):

./configure --with-darwinssl (habilitar la comunicación SSL en Mac) make make test sudo make install

¡Y después de varios minutos de trabajo, los problemas se resolvieron!

Luego volví a ejecutar el comando curl version, mostró:

curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocolos: archivo dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Características: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

¡El protocolo HTTPS apareció!

Finalmente, un sitio útil para consultar cuando te encuentres con problemas de curvatura. https://curl.haxx.se/docs/install.html

alguien
fuente
7

Lo resuelvo simplemente cambiando 'http://webname...'a"http://webname..."

Observe la cita. Debería ser double ( ") en lugar de single ( ').

Aminah Nuraini
fuente
¡si! Esto resolvió el problema para mí, ejecutando curl en mi símbolo del sistema de Windows. ¡Gracias!
Ryano
2

Mi problema fue causado por el símbolo UTF no mostrado. Copié el enlace de la pista nginx y obtuve el siguiente en el portapapeles:

0x00000000: e2 80 8b 68 74 74 70 73 3a 2f 2f 73 6b 2e 65 65 2f 75 70 6c 6f 61 64 2f 66 69 6c 65 73 2f 45 53  ...https://sk.ee/upload/files/ES
0x00000020: 54 45 49 44 2d 53 4b 5f 32 30 31 35 2e 70 65 6d 2e 63 72 74                                      TEID-SK_2015.pem.crt            

El símbolo del problema es 0xe2 0x80 0x8b CERO WIDTH JOINER , que precede a https.

SergA
fuente
1

Obtuve el mismo error al usar curl en el sitio https como

curl https://api.dis...

Como señaló Ganesh , fue porque mi versión de curl no estaba habilitada para SSL. Volví y descargué la versión con SSL y funcionó bien.

Deepak Rao
fuente
1
Yo también, no vi la opción SSL en la página de descarga.
Patrick Borkowicz
0

Acabo de volver a compilar curl con las opciones de configuración que apuntan a la carpeta de la biblioteca openssl 1.0.2g e incluir la carpeta, y todavía recibo este mensaje. Cuando yo LDD de rizo, que no muestra que se utiliza ya sea libcrypt.soo libssl.so, así que supongo que esto debe significar que a pesar de que el makey make installéxito sin errores, sin embargo rizo no tiene soporte HTTPS? Configurar y hacer fue el siguiente:

./configure --prefix=/local/scratch/PACKAGES/local --with-ssl=/local/scratch/PACKAGES/local/openssl/openssl-1.0.2g --includedir=/local/scratch/PACKAGES/local/include/openssl/openssl-1.0.2g
make
make test
make install

Debo mencionar que libssl.so.1está en /local/scratch/PACKAGES/local/lib. No está claro si la --with-sslopción debe apuntar allí o al directorio donde la instalación de openssl colocó el archivo openssl.cnf. Elegí el último. Pero si se suponía que fuera el primero, la marca debería haber fallado con un error que no pudo encontrar la biblioteca.

tedtoal
fuente
El texto del enlace en sí es correcto. curl no se puede recuperar usando https, y no sé por qué.
tedtoal
0

Especificar el protocolo dentro de la url podría resolver su problema.

Tuve un problema similar (al usar curl php client):

Estaba pasando domain.com en lugar de sftp: //domain.com que condujo a este error confuso:

El protocolo "http" no es compatible o está deshabilitado en libcurl, tardó 0 segundos.

ntt
fuente