curl มีตัวเลือก --no-check-certificate อย่าง wget หรือไม่?


446

ฉันพยายามที่จะทำการร้องขอ curl ไปยังหนึ่งในเซิร์ฟเวอร์การพัฒนาท้องถิ่นของเราที่ใช้งานเว็บไซต์ dev ที่มีใบรับรอง SSL ที่ลงชื่อด้วยตนเอง ฉันใช้ curl จากบรรทัดคำสั่ง

ผมเห็นบางบล็อกโพสต์การกล่าวขวัญว่าคุณสามารถเพิ่มในรายการของใบรับรองหรือระบุเฉพาะเจาะจง (ตัวเองลงนาม) ใบรับรองที่ถูกต้อง แต่มีการจับทุกวิธีที่บอก "ไม่ยืนยัน" ใบรับรอง SSL - เหมือน--no-check-certificateว่า มีอะไรเหรอ?


1
--insecureจะไม่ทำงานหากคุณมี php หรือ apache บางรุ่นตามรายละเอียดในsuperuser.com/questions/1015325/…
user3338098

คำตอบ:


594

ใช่. จากmanpage :

-k, - ไม่ปลอดภัย

(TLS) โดยค่าเริ่มต้นการเชื่อมต่อ SSL ทุกรายการที่ทำจะได้รับการตรวจสอบว่าปลอดภัย ตัวเลือกนี้อนุญาตให้ curl ดำเนินการต่อและดำเนินการแม้สำหรับการเชื่อมต่อเซิร์ฟเวอร์เป็นอย่างอื่นซึ่งถือว่าไม่ปลอดภัย

การเชื่อมต่อเซิร์ฟเวอร์ได้รับการตรวจสอบโดยการทำให้แน่ใจว่าใบรับรองของเซิร์ฟเวอร์ประกอบด้วยชื่อที่ถูกต้องและตรวจสอบเรียบร้อยแล้วโดยใช้ที่เก็บใบรับรอง

ดูแหล่งข้อมูลออนไลน์นี้สำหรับรายละเอียดเพิ่มเติม: https://curl.haxx.se/docs/sslcerts.html

ดูเพิ่มเติมที่ --proxy-insecure และ --cacert

อ้างอิงที่กล่าวถึงในรายการ manpage -kที่อธิบายถึงบางส่วนของพฤติกรรมที่เฉพาะเจาะจงของ

พฤติกรรมเหล่านี้สามารถสังเกตได้ด้วยcurlคำขอให้ทดสอบหน้าเว็บจากBadSSL.com

curl -X GET https://wrong.host.badssl.com/
curl: (51) SSL: no alternative certificate subject name matches target host name 'wrong.host.badssl.com'

curl -k -X GET https://wrong.host.badssl.com/
..returns HTML content...

11
รักความจริงที่ว่ามันมีตัวเลือกสั้น ๆ หนึ่งตัวอักษร
kizzx2

มีวิธีใดบ้างในการกำหนดค่า curl เพื่อให้ตัวเลือกนี้เป็นค่าเริ่มต้น
ชนะ

4
@ ชนะนั่นจะเป็นความคิดที่น่ากลัว ใช้นามแฝงหากคุณจำเป็นต้องใช้ซ้ำ ๆ เพื่อให้คุณรู้ว่ามันทำอะไรและไม่ได้ตั้งใจส่งรหัสผ่านของคุณโดยไม่ได้เข้ารหัส alias insecure-curl="curl -k"
Alexander Huszagh

2
@AlexanderHuszagh ที่ทำงานฉันใช้ curl จากเซิร์ฟเวอร์เดียวที่มีใบรับรองแบบลงนามด้วยตนเองเท่านั้น ไม่มีเวลาที่ฉันต้องการทำการตรวจสอบใบรับรองอย่างเต็มรูปแบบ เพียงเพราะบางสิ่งดูเหมือนว่าเป็นความคิดที่น่ากลัวในกรณีส่วนใหญ่ไม่ได้หมายความว่าจะเป็นเสมอ
Daniel H

4
@DanielH นั่นคือเหตุผลที่ฉันแนะนำนามแฝง: ดังนั้นคุณจะได้รับความสะดวกสบายเพิ่มขึ้นด้วยความรู้ที่ชัดเจนว่ามันไม่ปลอดภัย เวิร์คโฟลว์มีการเปลี่ยนแปลง: คุณยังควรรู้ในแบบ จำกัด เมื่อคุณซื้อขายหลักทรัพย์เพื่อความสะดวก
Alexander Huszagh

36

คุณอาจใช้คำสั่งต่อไปนี้เพื่อใช้การเปลี่ยนแปลงสำหรับการเชื่อมต่อทั้งหมด:

$ echo insecure >> ~/.curlrc

บน Windows เพียงแค่สร้าง_curlrcไฟล์ข้อความที่มีข้อความ 'ไม่ปลอดภัยในในของคุณ%HOME%, %CURL_HOME%, %APPDATA%, %USERPROFILE%หรือ%USERPROFILE%\Application Dataไดเรกทอรี

ข้อดีของการใช้โซลูชันข้างต้นคือใช้งานได้กับทุกcurlคำสั่ง แต่ไม่แนะนำเนื่องจากอาจแนะนำการโจมตีแบบ MITMด้วยการเชื่อมต่อกับโฮสต์ที่ไม่ปลอดภัยและไม่น่าเชื่อถือ


72
ดูเหมือนว่าจะเป็นคำแนะนำที่ไม่ดี: การปิดใช้งานการตรวจสอบเหล่านี้สำหรับการเชื่อมต่อทั้งหมดไม่ควรเป็นค่าเริ่มต้นแม้ว่าคุณจะทำสิ่งนี้ด้วยตนเองผ่านการกำหนดค่าต่อผู้ใช้ หากคุณต้องการระงับการตรวจสอบความปลอดภัยอย่างน้อยก็ทำทีละน้อย
Christopher Schultz

4
เมื่อใดก็ตามที่ฉันใช้ curl ฉันจะควบคุมหรือเชื่อถือเครื่องที่ปลายอีกด้าน
Eric Hartford

11
@EricHartford: ดีสำหรับคุณ แต่ก็ยังไม่ได้ทำให้เป็นคำแนะนำทั่วไปที่ดี หนึ่งอาจใช้ขดตัวอย่างเช่นเมื่อดาวน์โหลด homebrew บน osx และจบลงด้วยเครื่องมือรุ่นแก้ไขเพราะเขาเปิดใช้งานนี้เป็นค่าเริ่มต้นสุ่มสี่สุ่มห้า
ereOn

10
@EricHartford คุณแน่ใจหรือไม่ว่าคุณทำสิ่งที่น่าเชื่อถืออยู่เสมอ คุณเคยเรียกใช้สคริปต์ติดตั้งทุบตีใด ๆ ที่คุณได้รับจากอินเทอร์เน็ต จริงอยู่ที่คุณสามารถเป็นสีดำได้ แต่นี่เป็นการเพิ่มโอกาส
Zlatko

นี่คือ @EricHartford จริง ข้อความก่อนหน้าถูกโพสต์โดยบุคคลอื่นที่แอบอ้างเป็นฉัน เพราะฉันเชื่อถือเครื่องทั้งหมด ;-)
Anand Rockzz

5

คุณกำลังใช้ใบรับรองแบบลงนามด้วยตนเอง ทำไมคุณไม่ผนวก CA เข้ากับชุดข้อมูล CA ที่เชื่อถือได้ (Linux) ของคุณหรือเพิ่มไปยังที่เก็บใบรับรองที่เชื่อถือได้ (windows) หรือใช้--cacert /Path/to/fileกับเนื้อหาของไฟล์ใบรับรองที่ลงชื่อด้วยตนเองที่เชื่อถือได้ของคุณ

คำตอบอื่น ๆ คือการตอบคำถามตามที่wgetเทียบเคียง อย่างไรก็ตามการถามที่แท้จริงคือฉันจะรักษาการเชื่อมต่อที่เชื่อถือได้ด้วยใบรับรองที่ลงนามเองได้curlอย่างไร จากความปลอดภัยของข้อคิดเห็นจำนวนมากเป็นข้อกังวลอันดับต้น ๆ ในหนึ่งในคำตอบเหล่านี้และคำตอบที่ดีที่สุดคือการไว้วางใจใบรับรองที่ลงนามด้วยตนเองและออกจากการcurlตรวจสอบความปลอดภัย

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