curl:(1)プロトコルhttpsはサポートされていないか、libcurlで無効になっています


162

Ubuntu 11.04にRails環境をインストールしようとしています。コマンドを起動すると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)はどうなりますか?
Omri Barel

同じ問題、私は--with ...が回避策であることを教えました
Giuseppe Di Federico

1
curlがHTTPSをサポートしていないとは信じられません。rvmに独自のcurlが付属しているか、curlをインストールしなかった可能性があります(sudo apt-get install curl)。試してみてくださいcurl -o "google.html" https://google.comHTTPSがサポートされているかどうかを確認します。
Omri Barel 2011

と同じエラーメッセージが表示されRCurlます。
同型

これには受け入れられた答えがないことに驚いた。
jbrahy

回答:


295

ここでWindows の答えを得ました、それはそこに言っています:

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

おっと、まず試してみて、すでにエラー:

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

このエラーの理由は一種の愚かであり、コマンドに単一引用符を使用している場合Windowsはそれを好まない。したがって、正しいコマンドは次のとおりです。

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

2
提供されている他の回答がいずれもWindowsで機能しない場合は、代わりにWindows SSL対応のcURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspiを使用してください
ガネーシュ2015年

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" }'ます。間違った部分の引用。
Emmanuel Mahuni 2017

@EmmanuelMahuni手がかりをありがとう。bitbucketパイプラインからCURLを実行しようとしたときに同じ問題が発生しました。値に二重引用符( ")が含まれています(jqを使用してaws cliからのjson応答から読み込んでいるため)。これが私がやった方法です new_url=$( echo $url | tr -d \" )
Appu Mistri

1
あなたは私をとても多くの時間節約しました!ありがとう!
Richard Varno

1
macOSのcurlでも同じ効果があります。
not2savvy

82

私はこの問題に遭遇し、問題の原因となっているスペースの前にスペースがあったhttpsことがわかりました。" https://""https://"


6
そして、私は同じになりました。なぜ地獄がこのエラーに遭遇しているのか驚いた。:)これを共有するための+1。
Awais Qarni

3
私にとっても同様でしたが、必須ではありませんでしたが、デフォルトのbash値を一重引用符で囲んでいたため、一重引用符でした...
Mathieu Dumoulin

1
私自身も含めて、これが非常に多くの人々にとって明らかに問題であったことは驚くべきことです。これは時々起こりますが、それは一種のあいまいなようです。まぁ。ありがとう
dgo

1
それが私の問題でした。おかげで@jbrahy
colecmc

1
はい、同じです。スペースを削除することで、私にとってはうまくいきました。
アマンディープカウル

21

回答はすでにたくさんあるようですが、私が直面した問題は二重引用符でした。違いがあります:

そして

"

最初の二重引用符を2番目の二重引用符に変更すると、以下のサンプルのカールになります:

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

確かに私の男。
Pavan_Obj

これで問題が解決しました。
Hari Ennekat

喜んでそれを修正しました:)
Pavan_Obj

11

Ruby用のRVMをインストールしようとしたときに、同じ問題が発生しました。解決策を見つけました:ルートのダウンロードフォルダにカール(tar)を抽出した後

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 FAQエントリ「libxxxでサポートされていない、または無効になっているプロトコルxxx」で具体的に言及されています。

あなたの喜びのために、私もここに説明を埋め込みます:

使用するcurlのURLを渡すと、特定のプロトコルがサポートされていないか無効になっていると応答する場合があります。このエラーメッセージの具体的な言い方は、curlは特定のプロトコルがサポートされていない(つまり、そのプロトコルの読み方を知っているコードが追加されていない)か、明示的に無効にされているかを内部的に区別しないためです。curlは、特定のプロトコルセットのみをサポートするように構築でき、残りは無効化またはサポートされなくなります。

このエラーは、「htpt://example.com」のようにスペルが間違っているプロトコルパーツを渡した場合や、「 http:// example .com / "。


10
この回答がOPに問題を解決するために何をする必要があるかを説明しているとは思いません。
同型

3
メッセージの意味を説明しています。つまり、彼のコマンドラインではHTTPSを有効にしてlibcurlを構築するには不十分でした
Daniel Stenberg

スペースプレフィックスによってビットを取得しました。エラーだけが「プロトコル "xxx"がサポートされていないか、libcurlで無効になっている」と表示されている場合
トファー

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(Macでssl通信を有効にする)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 Largefile NTLM NTLM_WB SSL libz UnixSockets

HTTPSプロトコルが登場しました!

最後に、カールの問題が発生したときに参照するのに役立つサイトです。 https://curl.haxx.se/docs/install.html


7

に変更'http://webname...'するだけで解決します"http://webname..."

見積もりに注意してください。"シングル(')ではなく、ダブル()にする必要があります。


はい!これで問題が解決し、Windowsコマンドプロンプトでcurlを実行できました。ありがとうございました!
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            

問題の記号は、httpsの前にある0xe2 0x80 0x8b ZERO WIDTH JOINERです。


1

のようにhttpsサイトでカールを使用すると同じエラーが発生しました

curl https://api.dis...

ganeshが指摘したように、私のバージョンのcurlではsslが有効になっていないためです。戻って、sslでバージョンをダウンロードし、それは正常に動作しました。


1
ダウンロードページにSSLオプションが表示されませんでした。
Patrick Borkowicz、2015年

0

openssl 1.0.2gライブラリフォルダーとインクルードフォルダーを指す構成オプションを使用してcurlを再コンパイルしたところ、このメッセージが引き続き表示されます。curlでlddを実行しても、libcrypt.soorまたはのいずれかを使用していることが表示されないため、これは、エラーが発生せずに成功したにもかかわらず、curlがHTTPSをサポートしていないことをlibssl.so意味しているmakemake install思いますか?構成と作成は次のとおりです。

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

0

URL内でプロトコルを指定すると、問題が解決する場合があります。

(curl phpクライアントを使用しているときに)同様の問題が発生しました:

私はsftp://domain.comの代わりにdomain.comを渡していたため、この紛らわしいエラーが発生しました。

プロトコル「http」はlibcurlでサポートされていないか無効になっているため、0秒かかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.