curl: (1) протокол https не поддерживается или отключен в libcurl


162

Я пытаюсь установить среды Rails на Ubuntu 11.04. Когда я запускаю команду, rvm install 1.9.2 --with-openssl-dir=/usr/localпоявляется следующая ошибка:

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

Как это можно решить?


Что произойдет, если вы не используете --with-openssl-dir=/usr/local(то есть просто rvm install 1.9.2)?
Омри Барел

та же проблема, я подумал, что - с ... был обходной путь
Джузеппе ди Федерико

1
Мне трудно поверить, что ваш локон не поддерживает HTTPS. Возможно, что в rvm есть свой собственный curl или вы не установили curl ( sudo apt-get install curl). Попробуйте curl -o "google.html" https://google.comпроверить, поддерживается ли HTTPS.
Омри Барел

У меня такое же сообщение об ошибке с RCurl.
изоморфизм

Удивлен, что на этот раз нет принятого ответа.
Jbrahy

Ответы:


295

Получил ответ ЗДЕСЬ для окон, там написано, что:

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

Woops, сначала попробуйте и уже ошибка:

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

Причина этой ошибки довольно глупая, Windows не любит, когда вы используете одинарные кавычки для команд . Итак, правильная команда:

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

2
вместо этого используйте Windows cURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi с поддержкой SSL, если ни один из других предоставленных ответов не работает для окон.
Ганеш

6
это правильно, и просто добавьте немного соли, если вы действительно хотите использовать двойные кавычки в строке, которую вы цитируете, тогда вам нужно их избежать, например: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"вместо curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... обратите внимание на одиночный и неэкранированный двойной цитаты на неправильной части.
Эммануэль Махуни

@ EmmanuelMahuni Спасибо за подсказку. Я столкнулся с той же проблемой, пытаясь выполнить CURL из конвейера bitbucket, мое значение включает двойные кавычки (") (так как я читаю из ответа json из aws cli, используя jq), один раз после удаления double из начала и конца. работал для меня. Вот как я это сделал. new_url=$( echo $url | tr -d \" )
Appu

1
Вы просто сэкономили мне так много времени! Спасибо!
Ричард Варно

1
Имея тот же эффект с curl на macOS.
not2savvy

82

Я столкнулся с этой проблемой и оказалось, что до места, httpsкоторое вызывало проблему, было место. " https://"против"https://"


6
И я получил то же самое. Я был удивлен, почему, черт возьми, я получаю эту ошибку. :) +1 за то, что поделился этим.
Awais Qarni

3
Для меня это была одинарная кавычка, потому что мы обернули значение bash по умолчанию одинарной кавычкой, хотя в этом не было необходимости ...
Матье Дюмулен,

1
Удивительно, что это было проблемой для многих людей, включая меня. Это случается время от времени, но кажется неясным. Ах хорошо. Спасибо
КГВР

1
Это была проблема для меня. Спасибо @jbrahy
colecmc

1
Да, я получил то же самое. Удалив пространство, у меня получилось хорошо.
Амандип Каур

21

Похоже, что ответов уже так много, но проблема, с которой я столкнулся, заключалась в двойных кавычках. Есть разница между:

и

"

Изменение 1-й двойной кавычки на вторую сработало для меня, ниже приведен пример curl:

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

Конечно, мой мужчина.
Pavan_Obj

Это исправило мою проблему.
Хари Эннекат,

Рад, что это исправлено :).
Pavan_Obj

11

Я столкнулся с той же проблемой при попытке установить rvm для ruby. нашел решение: после распаковки curl (tar) в папку загрузок 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)

источник



8

Это специально упоминается в разделе часто задаваемых вопросов libcurl " Протокол xxx не поддерживается или отключен в libcurl ".

Для вашего удовольствия я добавлю здесь объяснение:

При передаче URL-адреса для использования curl, он может ответить, что определенный протокол не поддерживается или отключен. Конкретный способ формулировки этого сообщения об ошибке заключается в том, что curl не проводит внутреннего разграничения того, не поддерживается ли конкретный протокол (т. Е. Никогда не добавлялся какой-либо код, который знает, как произносить этот протокол), или он был явно отключен. curl может быть создан для поддержки только определенного набора протоколов, а остальные будут отключены или не поддерживаются.

Обратите внимание, что эта ошибка также будет возникать, если вы пропустите неправильно написанную часть протокола, как в «htpt: //example.com», или как в менее очевидном случае, если вы добавите префикс протокола с пробелом, как в « http: // example» .com / ".


10
Я не верю, что этот ответ объясняет ОП, что он / она должен сделать, чтобы решить проблему.
изоморфизм

3
он объясняет, что означает сообщение, а это означает, что его командной строки было недостаточно для сборки libcurl с включенным HTTPS
Даниэль Стенберг

Получил немного префикса пробела. Если только ошибка чтения «Протокол« xxx »не поддерживается или отключена в libcurl»
topher

8

В моем случае протокол HTTPS не был поддержан libcurl. Чтобы выяснить, какие протоколы поддерживаются, а какие нет, я проверил версию curl с помощью команды:

curl --version

Он предоставил следующую информацию: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Протоколы: файл dict ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Особенности: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

где протокол https не поддерживается.

Затем я переустановил curl и установил его, используя следующие команды (после распаковки):

./configure --with-darwinssl (включить ssl-связь в mac) make make test sudo make install

И после нескольких минут работы проблемы решены!

Затем я перезапустил команду curl version, которая показала:

curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Особенности: Крупный файл IPv6 NTLM NTLM_WB SSL libz UnixSockets

Протокол HTTPS появился!

Наконец, полезный сайт, на который можно сослаться, когда вы сталкиваетесь с проблемами с curl. https://curl.haxx.se/docs/install.html


7

Я решить только путем изменения 'http://webname...'в"http://webname..."

Обратите внимание на цитату.Это должно быть double ( ") вместо single ( ').


да! Это решило проблему для меня, запустив curl в командной строке Windows. Спасибо!
Ryano

2

Моя проблема была вызвана не отображаемым символом UTF. Я скопировал ссылку с трека nginx и получил следующее в буфере обмена:

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            

Символ проблемы - 0xe2 0x80 0x8b НУЛЕВОЙ ШИРОКИЙ ШАГМАН , который предшествует https.


1

Получил ту же ошибку при использовании curl на сайте https, как

curl https://api.dis...

как указал Ганеш , это было потому, что моя версия curl не была включена. вернулся и скачал версию с ssl и все работало нормально.


1
Я тоже не увидел вариант SSL на странице загрузки.
Патрик Боркович

0

Я просто перекомпилировал curl с параметрами конфигурации, указывающими на папку библиотеки openssl 1.0.2g и папку include, и я все еще получаю это сообщение. Когда я делаю ldd на curl, это не показывает, что он использует либо, libcrypt.soлибо libssl.so, поэтому я предполагаю, что это должно означать, что, хотя makeи make installуспешно без ошибок, тем не менее, curl не поддерживает HTTPS? Сконфигурировать и сделать было следующим образом:

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

Я должен упомянуть, что libssl.so.1в /local/scratch/PACKAGES/local/lib. Неясно, --with-sslдолжна ли опция указывать там или на каталог, куда установщик openssl поместил файл openssl.cnf. Я выбрал последнее. Но если он должен был быть первым, make должен был потерпеть неудачу с ошибкой, что он не мог найти библиотеку.


Сам текст ссылки правильный. curl не может получить с помощью https, и я не знаю почему.
tedtoal

0

Указание протокола в URL может решить вашу проблему.

У меня была похожая проблема (при использовании клиента curl php):

Я передавал domain.com вместо sftp: //domain.com, что привело к этой сбивающей с толку ошибке:

Протокол "http" не поддерживается или отключен в libcurl, заняло 0 секунд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.