curl: (1) Protokoll https wird in libcurl nicht unterstützt oder deaktiviert

162

Ich versuche, die Rails-Umgebungen unter Ubuntu 11.04 zu installieren. Wenn ich den Befehl rvm install 1.9.2 --with-openssl-dir=/usr/localstarte, wird der folgende Fehler angezeigt:

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

Wie kann das gelöst werden?

Giuseppe Di Federico
quelle
Was passiert, wenn Sie nicht --with-openssl-dir=/usr/local(dh einfach rvm install 1.9.2) verwenden?
Omri Barel
das gleiche Problem, ich dachte, dass - mit ... war eine Problemumgehung
Giuseppe Di Federico
1
Es fällt mir schwer zu glauben, dass Ihre Locke HTTPS nicht unterstützt. Es ist möglich, dass rvm mit einer eigenen Locke geliefert wird oder dass Sie curl ( sudo apt-get install curl) nicht installiert haben . Versuchen Sie curl -o "google.html" https://google.comzu überprüfen, ob HTTPS unterstützt wird.
Omri Barel
Ich habe die gleiche Fehlermeldung mit RCurl.
Isomorphismen
überrascht, dass es keine akzeptierte Antwort auf diese Frage gibt.
Jbrahy

Antworten:

294

Habe die Antwort HIER für Windows bekommen, dort steht:

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

Woops, erstmal versuchen und schon ein Fehler:

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

Der Grund für diesen Fehler ist irgendwie dumm, Windows mag es nicht, wenn Sie einfache Anführungszeichen für Befehle verwenden . Der richtige Befehl lautet also:

curl XPUT "http://localhost:9200/api/twittervnext/tweet"
cnlevy
quelle
2
Verwenden Sie stattdessen Windows SSL-fähiges cURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi, wenn keine der anderen bereitgestellten Antworten für Windows funktioniert.
Ganesh
6
Dies ist richtig, und nur um ein bisschen Salz hinzuzufügen, wenn Sie die doppelten Anführungszeichen in der Zeichenfolge, die Sie zitieren, tatsächlich verwenden möchten, müssen Sie sie umgehen, z. B.: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"statt curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... beachten Sie das einfache und nicht entflohene Doppel Zitate auf der falschen Seite.
Emmanuel Mahuni
@ Emmanuel Mahuni Danke für den Hinweis. Ich bin auf dasselbe Problem gestoßen, als ich versucht habe, aus der Bitbucket-Pipeline CURL zu verwenden. Mein Wert enthält doppelte Anführungszeichen (") (wie ich aus der JSON-Antwort von aws cli mit jq lese), einmal nachdem ich das Double von Anfang und Ende entfernt habe arbeitete für mich. Hier ist, wie ich es tat. new_url=$( echo $url | tr -d \" )
Appu Mistri
1
Du hast mir so viel Zeit gespart! Vielen Dank!
Richard Varno
1
Den gleichen Effekt mit Curl unter macOS haben.
not2savvy
82

Ich bin auf dieses Problem gestoßen und habe festgestellt, dass vor dem ein Leerzeichen httpswar, das das Problem verursacht hat. " https://"vs."https://"

jbrahy
quelle
6
Und ich habe das gleiche. Ich war überrascht, warum zum Teufel auf der Erde ich diesen Fehler bekomme. :) +1 für das Teilen.
Awais Qarni
3
Ähnlich für mich war es ein einfaches Anführungszeichen, weil wir einen Standard-Bash-Wert mit einem einfachen Anführungszeichen umbrochen hatten, obwohl es nicht notwendig war ...
Mathieu Dumoulin
1
Es ist erstaunlich, dass dies anscheinend ein Problem für so viele Menschen war - mich eingeschlossen. Diese Sache passiert von Zeit zu Zeit, aber es scheint irgendwie dunkel. Ah, gut. Danke
dgo
1
Das war das Problem für mich. Danke @jbrahy
colecmc
1
Ja, ich habe das gleiche. Durch das Entfernen von Platz hat es für mich gut funktioniert.
Amandeep Kaur
21

Es sieht so aus, als gäbe es bereits so viele Antworten, aber das Problem, mit dem ich konfrontiert war, waren doppelte Anführungszeichen. Es gibt einen Unterschied zwischen:

und

"

Das Ändern des 1. doppelten Anführungszeichens in das zweite, das für mich funktioniert hat, ist die folgende Beispiel-Locke:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"
Pavan_Obj
quelle
Sicher, mein Mann.
Pavan_Obj
Dieser hat mein Problem behoben.
Hari Ennekat
Ich bin froh, dass es behoben wurde :).
Pavan_Obj
11

Ich habe das gleiche Problem beim Versuch, rvm für Ruby zu installieren. fand die Lösung: nach dem Extrahieren von curl (tar) im Download-Ordner von 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)

Quelle

RT
quelle
9

Dieses Problem wurde mit flag --with-darwinssl gelöst

Wechseln Sie in den Ordner mit dem Curl-Quellcode

Laden Sie es hier herunter https://curl.haxx.se/download.html

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

Starten Sie Ihre Konsole neu und fertig!

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

Dies wird speziell im libcurl-FAQ-Eintrag " Protokoll xxx wird in libcurl nicht unterstützt oder deaktiviert " erwähnt.

Zu Ihrem Vergnügen binde ich die Erklärung auch hier ein:

Wenn Sie eine URL zur Verwendung an Curl weitergeben, wird möglicherweise darauf reagiert, dass das jeweilige Protokoll nicht unterstützt oder deaktiviert wird. Die besondere Art und Weise, wie diese Fehlermeldung formuliert wird, besteht darin, dass curl intern nicht unterscheidet, ob ein bestimmtes Protokoll nicht unterstützt wird (dh es wurde nie ein Code hinzugefügt, der weiß, wie man dieses Protokoll spricht) oder ob es explizit deaktiviert wurde. Curl kann so erstellt werden, dass nur ein bestimmter Satz von Protokollen unterstützt wird. Der Rest wird dann deaktiviert oder nicht unterstützt.

Beachten Sie, dass dieser Fehler auch auftritt, wenn Sie einen falsch geschriebenen Protokollteil wie in "htpt: //example.com" übergeben oder wie im weniger offensichtlichen Fall, wenn Sie dem Protokollteil ein Leerzeichen wie im Beispiel " http: // " voranstellen .com / ".

Daniel Stenberg
quelle
10
Ich glaube nicht, dass diese Antwort dem OP erklärt, was er tun muss, um das Problem zu beheben.
Isomorphismen
3
es erklärt, was die Nachricht bedeutet, was impliziert, dass seine Befehlszeile nicht ausreichte, um libcurl mit aktiviertem HTTPS zu erstellen
Daniel Stenberg
Wurde durch das Leerzeichenpräfix gebissen. Wenn nur der Fehler "Protokoll" xxx "in libcurl nicht unterstützt oder deaktiviert lautet
topher
8

In meinem Fall wurde das HTTPS-Protokoll von libcurl überhaupt nicht unterstützt. Um herauszufinden, welche Protokolle unterstützt werden und welche nicht, habe ich die Curl-Version mit dem folgenden Befehl überprüft:

curl --version

Es lieferte Informationen wie folgt: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protokolle: Diktatdatei ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Merkmale: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

Wobei das https-Protokoll nicht unterstützt wird.

Dann habe ich curl neu installiert und es mit den folgenden Befehlen installiert (nach dem Entpacken):

./configure --with-darwinssl (ssl-Kommunikation in Mac aktivieren) make make test sudo make install

Und nach einigen Minuten Arbeit waren die Probleme behoben!

Dann führe ich den Befehl curl version erneut aus. Er zeigte:

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

Das HTTPS-Protokoll wurde angezeigt!

Schließlich eine nützliche Website, auf die Sie verweisen können, wenn Sie auf Curl-Probleme stoßen. https://curl.haxx.se/docs/install.html

jemand
quelle
7

Ich löse es nur durch eine Änderung 'http://webname...'zu"http://webname..."

Beachten Sie das Zitat. Es sollte double ( ") anstelle von single ( ') sein.

Aminah Nuraini
quelle
Ja! Dies löste das Problem für mich, indem ich Curl in meiner Windows-Eingabeaufforderung ausführte. Danke dir!
Ryano
2

Mein Problem wurde durch ein nicht angezeigtes UTF-Symbol behoben. Ich kopiere den Link vom Nginx-Track und habe den nächsten in der Zwischenablage:

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            

Das Problemsymbol ist 0xe2 0x80 0x8b ZERO WIDTH JOINER , das vor https steht.

SergA
quelle
1

Habe den gleichen Fehler bei der Verwendung von Curl auf https-Site wie

curl https://api.dis...

Wie Ganesh betonte , lag es daran, dass meine Version von Curl nicht SSL-fähig war. ging zurück und lud die Version mit ssl herunter und es funktionierte gut.

Deepak Rao
quelle
1
Ich habe die SSL-Option auf der Download-Seite nicht gesehen.
Patrick Borkowicz
0

Ich habe gerade curl mit Konfigurationsoptionen neu kompiliert, die auf den Bibliotheksordner openssl 1.0.2g und den Ordner include zeigen, und ich erhalte immer noch diese Meldung. Wenn ich ldd on curl mache, zeigt es nicht, dass es entweder libcrypt.sooder verwendet libssl.so, also nehme ich an, dass dies bedeuten muss, dass curl , obwohl das makeund make installohne Fehler erfolgreich war, dennoch keine HTTPS-Unterstützung hat? Konfigurieren und erstellen war wie folgt:

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

Ich sollte erwähnen, dass libssl.so.1das in ist /local/scratch/PACKAGES/local/lib. Es ist unklar, ob die --with-sslOption dort oder auf das Verzeichnis verweisen soll, in dem die openssl-Installation die Datei openssl.cnf abgelegt hat. Ich habe mich für Letzteres entschieden. Aber wenn es das erstere sein sollte, sollte das Make mit einem Fehler fehlgeschlagen sein, dass es die Bibliothek nicht finden konnte.

Tedtoal
quelle
Der Linktext selbst ist korrekt. Curl kann nicht mit https abgerufen werden, und ich weiß nicht warum.
Tedtoal
0

Das Angeben des Protokolls in der URL kann Ihr Problem lösen.

Ich hatte ein ähnliches Problem (bei der Verwendung von Curl PHP Client):

Ich habe domain.com anstelle von sftp: //domain.com übergeben, was zu diesem verwirrenden Fehler führte:

Das Protokoll "http", das in libcurl nicht unterstützt oder deaktiviert wurde, dauerte 0 Sekunden.

ntt
quelle