curl: (1) Protocollo https non supportato o disabilitato in libcurl


162

Sto cercando di installare gli ambienti Rails su Ubuntu 11.04. Quando avvio il comando viene visualizzato rvm install 1.9.2 --with-openssl-dir=/usr/localil seguente errore:

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

Come può essere risolto?


Cosa succede se non usi --with-openssl-dir=/usr/local(cioè semplicemente rvm install 1.9.2)?
Omri Barel,

lo stesso problema, ho pensato che - con ... era una soluzione alternativa
Giuseppe Di Federico il

1
Trovo difficile credere che il tuo ricciolo non supporti HTTPS. È possibile che rvm abbia un proprio ricciolo o che tu non abbia installato curl ( sudo apt-get install curl). Prova curl -o "google.html" https://google.coma verificare se HTTPS è supportato.
Omri Barel,

Sto riscontrando lo stesso messaggio di errore con RCurl.
isomorfismi

sorpreso non c'è una risposta accettata su questo.
jbrahy,

Risposte:


295

Ho ottenuto la risposta QUI per Windows, dice che:

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

Woops, prima prova e già un errore:

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

Il motivo di questo errore è piuttosto stupido, a Windows non piace quando si utilizzano virgolette singole per i comandi . Quindi il comando corretto è:

curl XPUT "http://localhost:9200/api/twittervnext/tweet"

2
utilizzare invece curl.haxx.se/latest.cgiLcURl=win64-ssl-sspi abilitato per SSL di Windows se nessuna delle altre risposte fornite funziona per Windows.
Ganesh,

6
questo è corretto, e solo per aggiungere un po 'di sale, se si desidera effettivamente utilizzare le doppie virgolette nella stringa che si sta citando, è necessario evitarle, ad esempio: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"invece di curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... prendere nota del doppio singolo e senza caratteri di escape citazioni sulla parte sbagliata.
Emmanuel Mahuni,

@EmmanuelMahuni Grazie per l'indizio. Stavo riscontrando lo stesso problema durante il tentativo di CURL dalla pipeline di bitbucket, il mio valore include le doppie virgolette (") (come sto leggendo dalla risposta json da aws cli usando jq), una volta dopo aver rimosso il doppio dall'inizio e dalla fine. ha funzionato per me. Ecco come l'ho fatto. new_url=$( echo $url | tr -d \" )
Appu Mistri,

1
Mi hai appena risparmiato così tanto tempo! Grazie!
Richard Varno,

1
Avere lo stesso effetto con l'arricciatura su macOS.
not2savvy

82

Mi sono imbattuto in questo problema e ho scoperto che c'era uno spazio prima httpsche causava il problema. " https://"vs"https://"


6
E ho avuto lo stesso. Sono rimasto sorpreso dal motivo per cui diavolo sto ricevendo questo errore. :) +1 per condividere questo.
Awais Qarni,

3
Simile per me, era una virgoletta singola perché avevamo racchiuso un valore bash predefinito con virgoletta singola anche se non era necessario ...
Mathieu Dumoulin,

1
È sorprendente che questo apparentemente sia stato un problema per così tante persone, me compreso. Questa cosa succede di volta in volta, ma sembra in qualche modo oscuro. Ah bene. Grazie
do

1
Questo è stato il problema per me. Grazie @jbrahy
colecmc

1
Sì, ho avuto lo stesso. Rimuovendo lo spazio ha funzionato bene per me.
Amandeep kaur

21

Sembra che ci siano già così tante risposte ma il problema che ho affrontato era con le doppie virgolette. C'è una differenza tra:

e

"

Cambiando la prima doppia citazione nella seconda ha funzionato per me, di seguito è riportato il ricciolo del campione:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"

Certo, amico mio.
Pavan_Obj

Questo ha risolto il mio problema.
Hari Ennekat,

Contento di averlo risolto :).
Pavan_Obj,

11

Ho riscontrato lo stesso problema durante il tentativo di installare rvm per ruby. trovata la soluzione: dopo aver estratto il ricciolo (tar) nella cartella download di 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)

fonte



8

Ciò è specificamente menzionato nella voce FAQ di libcurl " Protocollo xxx non supportato o disabilitato in libcurl ".

Per tuo piacere, sto incorporando la spiegazione anche qui:

Quando si passa un URL da arricciare da utilizzare, è possibile che il protocollo specifico non sia supportato o disabilitato. Il modo particolare in cui viene scritto questo messaggio di errore è perché curl non distingue internamente se un determinato protocollo non è supportato (ovvero non è mai stato aggiunto alcun codice che sappia parlare quel protocollo) o se è stato esplicitamente disabilitato. curl può essere creato per supportare solo un determinato set di protocolli, e il resto verrebbe quindi disabilitato o non supportato.

Si noti che questo errore si verificherà anche se si passa una parte del protocollo scritta in modo errato come in "htpt: //example.com" o come nel caso meno evidente se si antepone la parte del protocollo con uno spazio come in " http: // esempio .com / ".


10
Non credo che questa risposta spieghi all'OP cosa deve fare per risolvere il problema.
isomorfismi

3
spiega cosa significa il messaggio, il che implica che la sua riga di comando non era abbastanza per creare libcurl con HTTPS abilitato
Daniel Stenberg,

Ottenuto dal prefisso spaziale. Se solo l'errore leggesse 'Protocollo "xxx" non supportato o disabilitato in libcurl'
topher

8

Nel mio caso, il protocollo HTTPS non è stato inizialmente supportato da libcurl. Per scoprire quali protocolli sono supportati e quali no, ho controllato la versione arricciata usando il comando:

curl --version

Forniva informazioni come segue: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocolli: file dict ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Caratteristiche: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

dove il protocollo https sembra non essere supportato.

Quindi ho reinstallato il ricciolo e l'ho installato usando i seguenti comandi (dopo averlo decompresso):

./configure --with-darwinssl (abilita la comunicazione ssl in mac) make make sudo make install

E dopo diversi minuti di lavoro, i problemi si sono risolti!

Quindi eseguo nuovamente il comando curl version, che mostra:

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

È apparso il protocollo HTTPS!

Infine, un sito utile da consultare in caso di problemi con l'arricciatura. https://curl.haxx.se/docs/install.html


7

Lo risolvo semplicemente cambiando 'http://webname...'in"http://webname..."

Nota la citazione. Dovrebbe essere double ( ") anziché single ( ').


sì! Questo ha risolto il problema per me, eseguendo curl nel mio prompt dei comandi di Windows. Grazie!
Ryano,

2

Il mio problema è stato causato dal simbolo UTF non visualizzato. Copio il link dalla traccia di nginx e ho il prossimo negli appunti:

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            

Il simbolo del problema è 0xe2 0x80 0x8b ZERO WIDTH JOINER , che precede https.


1

Ho ottenuto lo stesso errore quando si utilizza curl sul sito https come

curl https://api.dis...

come sottolineato da Ganesh , era perché la mia versione di arricciatura non era abilitata per SSL. tornò indietro e scaricò la versione con ssl e funzionò bene.


1
Anch'io non ho visto l'opzione SSL nella pagina di download.
Patrick Borkowicz,

0

Ho appena ricompilato il ricciolo con le opzioni di configurazione che puntano alla cartella della libreria openssl 1.0.2g e includo la cartella, e ricevo ancora questo messaggio. Quando eseguo ldd su curl, non mostra che usa neanche libcrypt.soo libssl.so, quindi presumo che ciò significhi che, sebbene il makee sia make installriuscito senza errori, tuttavia curl non ha il supporto HTTPS? Configurare e creare era come segue:

./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

Devo dire che libssl.so.1è dentro /local/scratch/PACKAGES/local/lib. Non è chiaro se l' --with-sslopzione debba puntare lì o alla directory in cui l'installazione di openssl ha posizionato il file openssl.cnf. Ho scelto quest'ultimo. Ma se dovesse essere il primo, la creazione avrebbe dovuto fallire con un errore che non riusciva a trovare la libreria.


Il testo del link stesso è corretto. non è possibile recuperare l'arricciatura usando https e non so perché.
martedì

0

Specificare il protocollo all'interno dell'URL potrebbe risolvere il problema.

Ho avuto un problema simile (durante l'utilizzo del client curl php):

Stavo passando domain.com anziché sftp: //domain.com che ha portato a questo errore confuso:

Il protocollo "http" non supportato o disabilitato in libcurl, ha impiegato 0 secondi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.