curl: (1) Protocole https non pris en charge ou désactivé dans libcurl


162

J'essaye d'installer les environnements Rails sur Ubuntu 11.04. Lorsque je lance la commande, rvm install 1.9.2 --with-openssl-dir=/usr/locall'erreur suivante est reçue:

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

Comment cela peut-il être résolu?


Que se passe-t-il si vous n'utilisez pas --with-openssl-dir=/usr/local(c'est-à-dire simplement rvm install 1.9.2)?
Omri Barel

le même problème, j'ai pensé que - avec ... était une solution de contournement
Giuseppe Di Federico

1
J'ai du mal à croire que votre boucle ne prend pas en charge HTTPS. Il est possible que rvm soit livré avec son propre curl, ou que vous n'ayez pas installé curl ( sudo apt-get install curl). Essayez curl -o "google.html" https://google.comde vérifier si HTTPS est pris en charge.
Omri Barel

J'ai le même message d'erreur avec RCurl.
isomorphismes

surpris qu'il n'y ait pas de réponse acceptée sur celui-ci.
jbrahy

Réponses:


295

Vous avez la réponse ICI pour Windows, il y est dit que:

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

Woops, essayez d'abord et déjà une erreur:

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

La raison de cette erreur est un peu stupide, Windows n'aime pas cela lorsque vous utilisez des guillemets simples pour les commandes . La commande correcte est donc:

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

2
utilisez plutôt cURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi compatible SSL Windows si aucune des autres réponses fournies ne fonctionne pour Windows.
ganesh

6
c'est correct, et juste pour ajouter un peu de sel, si vous voulez réellement utiliser les guillemets doubles dans la chaîne que vous citez, alors vous devez les échapper, par exemple: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"au lieu de curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... prenez note du double simple et non échappé citations sur la mauvaise partie.
Emmanuel Mahuni

@EmmanuelMahuni Merci pour l'indice. Je rencontrais le même problème en essayant de CURL à partir du pipeline bitbucket, ma valeur comprend des guillemets doubles (") (car je lis la réponse json de aws cli en utilisant jq), une fois après avoir supprimé le double du début et de la fin. a fonctionné pour moi. Voici comment je l'ai fait. new_url=$( echo $url | tr -d \" )
Appu Mistri

1
Vous venez de me faire gagner BEAUCOUP de temps! Merci!
Richard Varno

1
Avoir le même effet avec curl sur macOS.
not2savvy le

82

J'ai rencontré ce problème et j'ai découvert qu'il y avait un espace avant le httpsqui causait le problème. " https://"contre"https://"


6
Et j'ai la même chose. J'ai été surpris de savoir pourquoi diable je reçois cette erreur. :) +1 pour avoir partagé ceci.
Awais Qarni

3
Similaire pour moi, c'était un guillemet simple car nous avions enveloppé une valeur bash par défaut avec un guillemet simple bien que ce n'était pas nécessaire ...
Mathieu Dumoulin

1
C'est incroyable que ce soit apparemment un problème pour tant de gens - moi y compris. Cette chose arrive de temps en temps, mais cela semble assez obscur. Et bien. Merci
dgo

1
C'était le problème pour moi. Merci @jbrahy
colecmc

1
Oui, j'ai la même chose. En supprimant de l'espace, cela a bien fonctionné pour moi.
Amandeep kaur le

21

On dirait qu'il y a déjà tellement de réponses, mais le problème auquel j'ai été confronté était celui des guillemets doubles. Il y a une différence entre:

et

"

Changer le 1 er guillemet double par le deuxième a fonctionné pour moi, voici l'exemple de boucle:

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

Bien sûr mon homme.
Pavan_Obj

Celui-ci a résolu mon problème.
Hari Ennekat le

Heureux qu'il soit réparé :).
Pavan_Obj du

11

J'ai rencontré le même problème en essayant d'installer rvm pour ruby. trouvé la solution: après avoir extrait curl (tar) dans le dossier de téléchargements de la racine.

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)

la source



8

Ceci est spécifiquement mentionné dans l'entrée de FAQ de libcurl " Protocole xxx non supporté ou désactivé dans libcurl ".

Pour votre plaisir, j'intègre également l'explication ici:

Lors de la transmission d'une URL à curl à utiliser, il peut répondre que le protocole particulier n'est pas pris en charge ou désactivé. La façon particulière dont ce message d'erreur est formulé est que curl ne fait pas de distinction en interne pour savoir si un protocole particulier n'est pas pris en charge (c'est-à-dire qu'aucun code n'a été ajouté qui sait comment parler ce protocole) ou s'il a été explicitement désactivé. curl peut être construit pour ne prendre en charge qu'un ensemble donné de protocoles, et le reste serait alors désactivé ou non pris en charge.

Notez que cette erreur se produira également si vous transmettez une partie de protocole mal orthographiée comme dans "htpt: //example.com" ou comme dans le cas moins évident si vous préfixez la partie de protocole avec un espace comme dans " http: // exemple .com / ".


10
Je ne pense pas que cette réponse explique au PO ce qu'il / elle doit faire pour résoudre le problème.
isomorphismes

3
il explique ce que signifie le message, ce qui implique que sa ligne de commande n'était pas suffisante pour construire libcurl avec HTTPS activé
Daniel Stenberg

Obtenu peu par le préfixe d'espace. Si seulement l'erreur a lu 'Protocole "xxx" non pris en charge ou désactivé dans libcurl'
topher

8

Dans mon cas, le protocole HTTPS n'était pas pris en charge par libcurl au départ. Pour savoir quels protocoles sont pris en charge et lesquels ne le sont pas, j'ai vérifié la version curl à l'aide de la commande:

curl --version

Il a fourni les informations suivantes: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Protocoles: fichier dict ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Caractéristiques: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

où le protocole https n'est pas pris en charge.

Ensuite, j'ai réinstallé curl et l'ai installé à l'aide des commandes suivantes (après décompression):

./configure --with-darwinssl (activer la communication ssl sous mac) make make test sudo make install

Et après plusieurs minutes de travail, les problèmes sont résolus!

Ensuite, je réexécute la commande curl version, elle a montré:

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

Le protocole HTTPS est apparu!

Enfin, un site utile à consulter lorsque vous rencontrez des problèmes de curl. https://curl.haxx.se/docs/install.html


7

Je le résous simplement en changeant 'http://webname...'en"http://webname..."

Notez le devis. Il devrait être double ( ") au lieu de single ( ').


Oui! Cela a résolu le problème pour moi, en exécutant curl dans mon invite de commande Windows. Je vous remercie!
Ryano

2

Mon problème a été corrigé par le symbole UTF non affiché. Je copie le lien de la piste nginx et j'ai le suivant dans le presse-papiers:

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            

Le symbole du problème est 0xe2 0x80 0x8b ZERO WIDTH JOINER , qui précède https.


1

Vous avez la même erreur lors de l'utilisation de curl sur le site https comme

curl https://api.dis...

comme l'a souligné ganesh , c'était parce que ma version de curl n'était pas activée ssl. est retourné et a téléchargé la version avec ssl et cela a bien fonctionné.


1
Moi aussi, je n'ai pas vu l'option SSL sur la page de téléchargement.
Patrick Borkowicz

0

Je viens de recompiler curl avec les options de configuration pointant vers le dossier de la bibliothèque openssl 1.0.2g et le dossier d'inclusion, et je reçois toujours ce message. Quand je fais ldd sur curl, cela ne montre pas qu'il utilise soit libcrypt.soou libssl.so, donc je suppose que cela doit signifier que même si le makeet a make installréussi sans erreurs, néanmoins curl ne prend pas en charge HTTPS? Configurer et créer était comme suit:

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

Je devrais mentionner que libssl.so.1c'est dans /local/scratch/PACKAGES/local/lib. Il n'est pas clair si l' --with-ssloption doit pointer là ou vers le répertoire où l'installation openssl a placé le fichier openssl.cnf. J'ai choisi ce dernier. Mais si c'était censé être le premier, le make aurait dû échouer avec une erreur indiquant qu'il ne pouvait pas trouver la bibliothèque.


Le texte du lien lui-même est correct. curl ne peut pas récupérer en utilisant https, et je ne sais pas pourquoi.
tedtoal

0

La spécification du protocole dans l'URL peut résoudre votre problème.

J'ai eu un problème similaire (lors de l'utilisation du client curl php):

Je passais domain.com au lieu de sftp: //domain.com, ce qui a conduit à cette erreur déroutante:

Le protocole "http" n'est pas pris en charge ou désactivé dans libcurl, a pris 0 seconde.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.