curl: (1) Protocolo https não suportado ou desativado no libcurl

162

Estou tentando instalar os ambientes Rails no Ubuntu 11.04. Quando inicio o comando, rvm install 1.9.2 --with-openssl-dir=/usr/localo seguinte erro é recebido:

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

Como isso pode ser resolvido?

Giuseppe Di Federico
fonte
O que acontece se você não usar --with-openssl-dir=/usr/local(ou seja, simplesmente rvm install 1.9.2)?
Omri Barel
o mesmo problema, eu ensinei que --with ... era uma solução alternativa
Giuseppe Di Federico
1
Acho difícil acreditar que sua curvatura não seja compatível com HTTPS. É possível que o rvm venha com sua própria curvatura ou que você não tenha instalado a curvatura ( sudo apt-get install curl). Tente curl -o "google.html" https://google.comverificar se o HTTPS é suportado.
Omri Barel
Estou tendo a mesma mensagem de erro com RCurl.
Isomorphismes
surpreso que não haja uma resposta aceita nesse caso.
Javahy 15/04

Respostas:

295

Tenho a resposta AQUI para windows, diz lá que:

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

Woops, primeira tentativa e já existe um erro:

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

O motivo desse erro é meio estúpido, o Windows não gosta quando você usa aspas simples para comandos . Portanto, o comando correto é:

curl XPUT "http://localhost:9200/api/twittervnext/tweet"
cnlevy
fonte
2
use o cURL habilitado para Windows SSL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi em vez se nenhuma das outras respostas fornecidas funcionar para o Windows.
9755
6
isso está correto, e apenas para adicionar um pouco de sal, se você realmente quiser usar aspas duplas na string que está citando, precisará escapá-las, por exemplo: em curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"vez de curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... observe o duplo simples e sem escape citações na parte errada.
Emmanuel Mahuni
@EmmanuelMahuni Obrigado pela pista. Eu estava enfrentando o mesmo problema ao tentar fazer CURL a partir do pipeline de bitbucket, meu valor inclui aspas duplas (") (como estou lendo na resposta json do aws cli usando jq), uma vez após remover o duplo do início e do fim. . trabalhado para mim Aqui está como eu fiz isso. new_url=$( echo $url | tr -d \" )
Appu Mistri
1
Você acabou de me poupar MUITO tempo! Obrigado!
Richard Varno 05/11/19
1
Tendo o mesmo efeito com ondulação no macOS.
not2savvy 25/01
82

Eu me deparei com esse problema e descobri que havia um espaço antes do httpsque estava causando o problema. " https://"vs"https://"

jbrahy
fonte
6
E eu fiquei igual. Fiquei surpreso por que diabos estou recebendo esse erro. :) +1 por compartilhar isso.
Awais Qarni
3
Semelhante por mim, foi uma única citação porque tinha envolvido um valor do bash padrão com aspas simples, embora não era necessário ...
Mathieu Dumoulin
1
É incrível que isso aparentemente tenha sido um problema para tantas pessoas - inclusive eu. Isso acontece de tempos em tempos, mas parece meio obscuro. Ah bem. Obrigado
dgo
1
Esse foi o problema para mim. Obrigado @jbrahy
colecmc
1
Sim, eu tenho o mesmo. Ao remover o espaço, funcionou bem para mim.
Amandeep kaur 07/01
21

Parece que já existem muitas respostas, mas o problema que enfrentei foi com aspas duplas. Há uma diferença entre:

e

"

Alterando a 1ª cotação dupla para a segunda, trabalhou abaixo para mim, abaixo está o exemplo de ondulação:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"
Pavan_Obj
fonte
Coisa certa meu homem.
Pavan_Obj 31/05/19
Este corrigiu o meu problema.
Hari Ennekat 26/09/19
Fico feliz que fixo :).
Pavan_Obj 26/09/19
11

Encontrei o mesmo problema ao tentar instalar o rvm para ruby. encontrou a solução: depois de extrair curl (tar) na pasta de downloads da raiz.

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

RT
fonte
9

Resolvido este problema com o sinalizador --with-darwinssl

Vá para a pasta com código fonte de ondulação

Faça o download aqui https://curl.haxx.se/download.html

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

reinicie o console e pronto!

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

Isso é mencionado especificamente na entrada da FAQ do libcurl " Protocolo xxx não suportado ou desativado no libcurl ".

Para seu prazer, também estou incorporando a explicação aqui:

Ao transmitir um URL para usar o curl, ele pode responder que o protocolo específico não é suportado ou desativado. A maneira particular como essa mensagem de erro é formulada é porque o curl não faz uma distinção interna sobre se um protocolo específico não é suportado (ou seja, nunca foi adicionado nenhum código que sabe como falar esse protocolo) ou se foi explicitamente desativado. o curl pode ser criado para suportar apenas um determinado conjunto de protocolos, e o restante será desativado ou não será suportado.

Observe que esse erro também ocorrerá se você passar uma parte do protocolo com ortografia incorreta, como em "htpt: //example.com" ou, no caso menos evidente, se você prefixar a parte do protocolo com um espaço como em " http: // example .com / ".

Daniel Stenberg
fonte
10
Não acredito que essa resposta explique ao OP o que ele precisa fazer para corrigir o problema.
Isomorphismes
3
ele explica o que os meios de mensagens, o que implica que a sua linha de comando não foi suficiente para construir libcurl com HTTPS habilitado
Daniel Stenberg
Ficou com o prefixo do espaço. Se apenas o erro de leitura 'Protocolo 'xxx' não suportado ou deficientes em libcurl'
topher
8

No meu caso, o protocolo HTTPS não era suportado pela libcurl em primeiro lugar. Para descobrir quais protocolos são suportados e quais não, verifiquei a versão curl usando o comando:

curl --version

Ele forneceu informações da seguinte maneira: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocolos: arquivo 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

onde o protocolo https não é suportado.

Em seguida, reinstalei o curl e instalei-o usando os seguintes comandos (após descompactar):

./configure --with-darwinssl (ativar a comunicação ssl no mac) make make test sudo make install

E após vários minutos de trabalho, os problemas foram resolvidos!

Em seguida, executei novamente o comando curl version, que mostrou:

curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocolos: arquivo 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

Protocolo HTTPS apareceu!

Por fim, um site útil para se referir ao encontrar problemas de ondulação. https://curl.haxx.se/docs/install.html

alguém
fonte
7

Eu resolvo isso apenas mudando 'http://webname...'para"http://webname..."

Observe a citação. Deve ser duplo ( ") em vez de único ( ').

Aminah Nuraini
fonte
sim! Isso resolveu o problema para mim, executando o curl no prompt de comando do Windows. Obrigado!
Ryano 15/08/19
2

Meu problema foi resolvido pelo símbolo UTF não exibido. Copiei o link da faixa nginx e obtive o próximo na área de transferência:

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            

O símbolo do problema é 0xe2 0x80 0x8b ZERO WIDTH JOINER , que precede https.

SergA
fonte
1

Obteve o mesmo erro ao usar o curl no site https, como

curl https://api.dis...

como indicado por ganesh , foi porque minha versão do curl não estava habilitada para ssl. voltou e baixou a versão com ssl e funcionou bem.

Deepak Rao
fonte
1
Eu também não vi a opção SSL na página de download.
Patrick Borkowicz
0

Acabei de recompilar o curl com as opções de configuração apontando para a pasta da biblioteca openssl 1.0.2g e incluir a pasta, e ainda recebo esta mensagem. Quando eu faço o ldd on curl, ele não mostra que ele usa um libcrypt.soou outro libssl.so, então suponho que isso deva significar que, embora o makee tenha sido make installbem - sucedido sem erros, o curl não tem suporte para HTTPS? Configure e make foi o seguinte:

./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 mencionar que libssl.so.1está em /local/scratch/PACKAGES/local/lib. Não está claro se a --with-sslopção deve apontar para lá ou para o diretório em que a instalação do openssl colocou o arquivo openssl.cnf. Eu escolhi o último. Mas se fosse para ser o primeiro, a marca deveria ter falhado com um erro que não conseguiu encontrar a biblioteca.

tedtoal
fonte
O próprio texto do link está correto. o curl não pode ser recuperado usando https e não sei por quê.
30616 tedtoal
0

A especificação do protocolo no URL pode resolver seu problema.

Eu tive um problema semelhante (ao usar o curl php client):

Eu estava passando domain.com em vez de sftp: //domain.com, o que levou a esse erro confuso:

O protocolo "http" não suportado ou desativado no libcurl, levou 0 segundos.

ntt
fonte