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)
Omri Barel

ปัญหาเดียวกันฉันคิดว่า - ด้วย ... เป็นวิธีแก้ปัญหา
Giuseppe Di Federico

1
ฉันคิดว่ามันยากที่จะเชื่อว่า curl ของคุณไม่รองรับ HTTPS อาจเป็นไปได้ว่า rvm มาพร้อมกับ curl ของตัวเองหรือคุณไม่ได้ติดตั้ง curl ( sudo apt-get install curl) ลองcurl -o "google.html" https://google.comตรวจสอบว่ารองรับ HTTPS หรือไม่
Omri Barel

RCurlฉันมีข้อผิดพลาดเดียวกันกับ
isomorphismes

แปลกใจที่ไม่มีคำตอบที่ยอมรับในเรื่องนี้
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
ใช้ cURL ที่เปิดใช้งาน Windows cURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspiแทนหากไม่มีคำตอบอื่นใดที่ใช้ได้สำหรับ windows
ganesh

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" }'... จดบันทึก single และ unescaped double คำพูดในส่วนที่ไม่ถูกต้อง
เอ็มมานู Mahuni

@EmmanuelMahuni ขอบคุณสำหรับคำใบ้ ฉันพบปัญหาเดียวกันขณะที่พยายาม CURL จากไปป์ไลน์ bitbucket ค่าของฉันรวมถึงเครื่องหมายคำพูดคู่ (") (เนื่องจากฉันกำลังอ่านจากคำตอบ json จากคำสั่ง json จาก aws cli โดยใช้ jq) หลังจากลบ double จากจุดเริ่มต้นและสิ้นสุด ทำงานให้ฉันนี่คือวิธีที่ฉันทำ new_url=$( echo $url | tr -d \" )
Appu Mistri

1
คุณเพิ่งช่วยฉันเวลามาก! ขอบคุณ!
ริชาร์ด Varno

1
การใช้เอฟเฟกต์แบบเดียวกันกับ curl บน macOS
not2savvy

82

ฉันพบปัญหานี้และพบว่ามีช่องว่างก่อนหน้าhttpsซึ่งทำให้เกิดปัญหา " https://"VS"https://"


6
และฉันก็เหมือนกัน ฉันประหลาดใจว่าทำไมนรกบนโลกที่ฉันได้รับข้อผิดพลาดนี้ :) +1 สำหรับแบ่งปันสิ่งนี้
Awais Qarni

3
ที่คล้ายกันสำหรับผมแล้วมันเป็นคำพูดเดียวเพราะเราได้ห่อมูลค่าทุบตีเริ่มต้นด้วยคำพูดเดียว แต่มันก็ไม่จำเป็นต้อง ...
Mathieu Dumoulin

1
มันน่าทึ่งที่เห็นได้ชัดว่านี่เป็นปัญหาสำหรับคนจำนวนมาก - รวมตัวเอง สิ่งนี้เกิดขึ้นเป็นครั้งคราว แต่ดูเหมือนจะคลุมเครือ อาดี ขอบคุณ
dgo

1
นั่นคือปัญหาสำหรับฉัน ขอบคุณ @jbrahy
colecmc

1
ใช่ฉันได้รับเหมือนกัน โดยการลบพื้นที่มันใช้งานได้ดีสำหรับฉัน
Amandeep kaur

21

ดูเหมือนว่าจะมีคำตอบมากมายอยู่แล้ว แต่ปัญหาที่ฉันเผชิญคือการใช้เครื่องหมายคำพูดคู่ มีความแตกต่างระหว่าง:

และ

"

การเปลี่ยนคำพูดคู่ที่ 1 เป็นคำที่สองที่เหมาะกับฉันด้านล่างคือตัวอย่างของตัวอย่าง:

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

แน่นอนว่าชายของฉัน
Pavan_Obj

อันนี้แก้ไขปัญหาของฉัน
Hari Ennekat

ดีใจที่ได้รับการแก้ไข :)
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)

แหล่ง


9

แก้ไขปัญหานี้ด้วยการตั้งค่าสถานะ - ด้วย -darwinssl

ไปที่โฟลเดอร์ที่มีรหัสที่มาของขด

ดาวน์โหลดได้ที่นี่https://curl.haxx.se/download.html

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

รีสตาร์ทคอนโซลของคุณและทำเสร็จแล้ว!


8

สิ่งนี้ถูกกล่าวถึงโดยเฉพาะในรายการคำถามที่พบบ่อยของ libcurl " โปรโตคอล xxx ไม่ได้รับการสนับสนุนหรือปิดใช้งานใน libcurl "

เพื่อความสุขของคุณฉันกำลังฝังคำอธิบายไว้ที่นี่ด้วย:

เมื่อส่งผ่าน URL ไปยัง curl เพื่อใช้อาจตอบกลับว่าโปรโตคอลใดไม่ได้รับการสนับสนุน วิธีเฉพาะข้อความแสดงข้อผิดพลาดนี้เป็นวลีเนื่องจาก curl ไม่ได้ทำให้เกิดความแตกต่างภายในว่าโปรโตคอลไม่ได้รับการสนับสนุน (เช่นไม่เคยมีรหัสที่เพิ่มซึ่งรู้วิธีพูดโปรโตคอลนั้น) หรือปิดใช้งานอย่างชัดเจน curl สามารถสร้างขึ้นเพื่อรองรับชุดโปรโตคอลที่กำหนดเท่านั้นจากนั้นส่วนที่เหลือจะถูกปิดใช้งานหรือไม่รองรับ

โปรดทราบว่าข้อผิดพลาดนี้จะเกิดขึ้นหากคุณส่งส่วนโปรโตคอลที่สะกดผิดอย่างเช่นใน "htpt: //example.com" หรือในกรณีที่เห็นได้ชัดน้อยลงหากคุณใส่ส่วนโปรโตคอลที่มีช่องว่างเช่น " http: // ตัวอย่าง .com / "


10
ฉันไม่เชื่อว่าคำตอบนี้อธิบายให้ OP ทราบถึงสิ่งที่เขา / เธอต้องทำเพื่อแก้ไขปัญหา
isomorphismes

3
มันอธิบายว่าข้อความหมายถึงอะไรซึ่งหมายความว่าบรรทัดคำสั่งของเขาไม่เพียงพอที่จะสร้าง libcurl เมื่อเปิดใช้งาน HTTPS
Daniel Stenberg

เตรียมพร้อมนิดหน่อยโดยคำนำหน้าช่องว่าง หากข้อผิดพลาดเท่านั้นอ่าน 'Protocol "xxx" ไม่ได้รับการสนับสนุนหรือปิดการใช้งานใน libcurl'
topher

8

ในกรณีของฉัน libcurl ไม่รองรับโปรโตคอล HTTPS ตั้งแต่แรก หากต้องการทราบว่าสนับสนุนโปรโตคอลใดและไม่ใช้ฉันตรวจสอบรุ่น 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 smtps telnet tftp คุณสมบัติ: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

ที่โปรโตคอล https เกิดขึ้นที่ไม่ได้รับการสนับสนุน

จากนั้นฉันติดตั้ง curl ใหม่และติดตั้งโดยใช้คำสั่งต่อไปนี้ (หลังจากแกะกล่อง):

./configure - ด้วย -darwinssl (เปิดใช้งานการสื่อสาร ssl ใน mac) ทำการทดสอบทำให้ sudo ทำการติดตั้ง

และหลังจากเวลาผ่านไปหลายนาทีปัญหาได้รับการแก้ไข!

จากนั้นฉันรันคำสั่งเวอร์ชัน curl อีกครั้งมันแสดง:

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 pop3s rtsp smb smbs smtp smtp smtps smtps telnet tftp คุณสมบัติ: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

โปรโตคอล HTTPS ปรากฏตัว!

ในที่สุดเว็บไซต์ที่มีประโยชน์ในการอ้างอิงเมื่อคุณพบปัญหาเกี่ยวกับขด https://curl.haxx.se/docs/install.html


7

ฉันแก้มันเพียงแค่เปลี่ยน'http://webname...'เป็น"http://webname..."

สังเกตคำพูด ควรเป็น double ( ") แทนที่จะเป็น single ( ')


ใช่! วิธีนี้แก้ไขปัญหาสำหรับฉันโดยใช้ curl ในพรอมต์คำสั่ง windows ของฉัน ขอบคุณ!
Ryano

2

ปัญหาของฉันถูก coused โดยไม่แสดงสัญลักษณ์ 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 ZERO WIDTH JOINERซึ่งนำหน้า https


1

มีข้อผิดพลาดเดียวกันเมื่อใช้ curl บนเว็บไซต์ https เช่น

curl https://api.dis...

เป็นแหลมออกโดยพระพิฆเนศวร , มันเป็นเพราะรุ่นของฉันขดไม่ได้เปิดใช้งาน SSL กลับไปและดาวน์โหลดเวอร์ชันด้วย ssl และทำงานได้ดี


1
ดังนั้นฉันจึงไม่เห็นตัวเลือก SSL ในหน้าดาวน์โหลด
Patrick Borkowicz

0

ฉันเพิ่งคอมไพล์ curl ใหม่ด้วยตัวเลือกการกำหนดค่าที่ชี้ไปยังโฟลเดอร์ไลบรารี openssl 1.0.2g และรวมโฟลเดอร์และฉันยังคงได้รับข้อความนี้ เมื่อฉันใช้ 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 ฉันเลือกหลัง แต่ถ้ามันควรจะเป็นอดีตทำควรจะล้มเหลวด้วยข้อผิดพลาดที่ไม่สามารถหาห้องสมุด


ข้อความลิงก์นั้นถูกต้อง curl ไม่สามารถดึงข้อมูลโดยใช้ https และฉันไม่รู้ว่าทำไม
tedtoal

0

การระบุโปรโตคอลภายใน URL อาจช่วยแก้ปัญหาของคุณได้

ฉันมีปัญหาที่คล้ายกัน (ในขณะที่ใช้ไคลเอนต์ curl php):

ฉันกำลังส่งdomain.comแทนsftp: //domain.comซึ่งนำไปสู่ข้อผิดพลาดที่สับสนนี้:

โปรโตคอล "http" ไม่ได้รับการสนับสนุนหรือปิดการใช้งานใน libcurl ใช้เวลา 0 วินาที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.