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?

Giuseppe Di Federico
la source
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"
cnlevy
la source
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://"

jbrahy
la source
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"
Pavan_Obj
la source
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

RT
la source
9

Résolution de ce problème avec l'indicateur --with-darwinssl

Aller au dossier avec le code source curl

Téléchargez-le ici https://curl.haxx.se/download.html

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

redémarrez votre console et c'est fait!

Максим Мартынов
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 / ".

Daniel Stenberg
la source
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

Quelqu'un
la source
7

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

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

Aminah Nuraini
la source
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.

SergA
la source
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é.

Deepak Rao
la source
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.

tedtoal
la source
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.

ntt
la source