การถอดรหัส HTTPS (Man-in-the-Middle Attack, MitM)
Chute สามารถถอดรหัสทราฟฟิก HTTPS โดย MitM โปรดดูบทความ Wikipedia สำหรับข้อมูลเพิ่มเติม
ตัวสร้างใบรับรองสามารถช่วยคุณสร้างใบรับรอง CA ใหม่สำหรับการดีบักและทำให้ใบรับรองเชื่อถือโดยระบบ มันมีให้ใน Chute Mac และ Chute iOS Chute Editor ใบรับรองนี้ถูกสร้างขึ้นในเครื่องและบันทึกเฉพาะในไฟล์โปรไฟล์ของคุณและ Keychain ของระบบ คีย์ของใบรับรองใหม่ถูกสร้างขึ้นแบบสุ่มโดยใช้ OpenSSL
คุณยังสามารถใช้ใบรับรอง CA ที่มีอยู่ได้ ส่งออกใบรับรองเป็นรูปแบบ PKCS#12 (.p12) พร้อมข้อความรหัสผ่าน โปรดทราบว่าข้อความรหัสผ่านต้องไม่ว่างเปล่าเนื่องจากข้อจำกัดของระบบ ใช้คำสั่ง "base64" เพื่อเข้ารหัสเป็นสตริง base64 และเพิ่มการตั้งค่าเหล่านี้ด้านล่างไปยังไฟล์การกำหนดค่าของคุณ
[MITM]
enable = true
ca-p12 = MIIJtQ.........
ca-passphrase = password
hostname = *google.com
Chute ถอดรหัสเฉพาะทราฟฟิกไปยังโฮสต์ที่ประกาศที่นี่
รองรับอักขระ wildcard และ ? โปรดทราบว่า ? จะทำหน้าที่เป็น wildcard ก็ต่อเมื่อกฎนั้นมี `อยู่ด้วย ส่วนกฎที่มีเพียง?` จะถูกเปรียบเทียบแบบตรงตัวอักษร
- ใช้คำนำหน้า - เพื่อยกเว้นชื่อโฮสต์
- โดยค่าเริ่มต้น เฉพาะคำขอไปยังพอร์ต 443 เท่านั้นที่ถูกถอดรหัส
- ใช้ส่วนต่อท้าย :port เพื่ออนุญาตพอร์ตอื่น
- ใช้ส่วนต่อท้าย :0 เพื่ออนุญาตทุกพอร์ต
ตัวอย่าง:
-*.apple.com: ยกเว้นคำขอทั้งหมดที่ส่งไปยัง *.apple.com บนพอร์ต 443www.google.com: อนุญาต MitM สำหรับ www.google.com บนพอร์ต 443www.google.com:8080: อนุญาต MitM สำหรับ www.google.com บนพอร์ต 8080www.google.com:0: อนุญาต MitM สำหรับ www.google.com บนทุกพอร์ต*: อนุญาต MitM สำหรับชื่อโฮสต์ทั้งหมดบนพอร์ต 443 (ไม่แนะนำ)*:0: อนุญาต MitM สำหรับชื่อโฮสต์ทั้งหมดบนทุกพอร์ต (ไม่แนะนำ)
รายการชื่อโฮสต์ยังสามารถระบุรูปแบบพาธต่อท้ายหลัง / ตัวแรกได้ด้วย โดยจะเปรียบเทียบส่วนโฮสต์ก่อนเพื่อตัดสินใจว่าจะถอดรหัสการเชื่อมต่อนั้นหรือไม่ จากนั้นรูปแบบพาธจะกรองว่าคำขอใดจะถูกถอดรหัสและประมวลผล
example.com/api/*: อนุญาต MitM สำหรับ example.com บนพอร์ต 443 เฉพาะคำขอที่พาธตรงกับ/api/*
การกำหนดค่าทั่วไปอาจเป็นดังนี้:
hostname = -*.apple.com, -*.icloud.com, *
Chute จะใช้กฎ URL Rewrite, Header Rewrite, Body Rewrite และ Mock (Map Local) รวมถึงสคริปต์กับคำขอ MitM ทั้งหมด
MitM รองรับ HTTP/2: Chute เสนอทั้ง h2 และ http/1.1 ให้กับไคลเอนต์ผ่าน ALPN ส่วนคีย์ h2 และ tcp-connection ของ [MITM] ใน Surge นั้นรับค่าได้ในไฟล์กำหนดค่าแต่จะถูกละเว้น
บางแอปพลิเคชันมีนโยบายความปลอดภัยที่เข้มงวดในการใช้ใบรับรองหรือ CA แบบปักหมุด การเปิดใช้งานการถอดรหัสสำหรับโฮสต์เหล่านี้อาจทำให้เกิดปัญหา
การติดตั้งและเชื่อถือใบรับรอง CA
การสร้าง (หรือนำเข้า) CA เป็นเพียงครึ่งเดียวของการตั้งค่า — ระบบปฏิบัติการต้องเชื่อถือมันด้วย จนกว่าทั้งสองขั้นตอนจะเสร็จสิ้น ทุกเว็บไซต์ที่ถูกถอดรหัสจะล้มเหลวพร้อมคำเตือนใบรับรอง หน้าใบรับรองในแอปแสดงสถานะปัจจุบัน ("ใบรับรอง CA ที่เชื่อถือ" / "ใบรับรอง CA ที่ไม่เชื่อถือ")
Chute iOS — ในตัวแก้ไขการกำหนดค่า เปิด MITM → กำหนดค่า CA:
- สร้างใบรับรอง CA ใหม่ (หรือ นำเข้าใบรับรอง P12 สำหรับใบรับรองที่มีอยู่แล้ว)
- แตะ ติดตั้งใบรับรอง CA ลงในระบบ หน้า Safari จะเปิดขึ้น — แตะ Install Certificate และอนุญาตการดาวน์โหลด จากนั้นติดตั้งโปรไฟล์ที่ดาวน์โหลดมาใน การตั้งค่า → ทั่วไป → VPN และการจัดการอุปกรณ์
- เชื่อถือมัน: การตั้งค่า → ทั่วไป → เกี่ยวกับ → การตั้งค่าความน่าเชื่อถือของใบรับรอง และเปิดการเชื่อถือแบบเต็มสำหรับ CA ของ Chute ขั้นตอนนี้คือขั้นที่คนส่วนใหญ่พลาด — หากไม่ทำ ใบรับรองจะถูกติดตั้งแต่ไม่ถูกเชื่อถือ และการถอดรหัสจะล้มเหลวต่อไป
Chute Mac — ในหน้าต่างการกำหนดค่า เปิด MitM:
- Generate New Certificate (หรือ Import Certificate from PKCS#12 File)
- คลิก Install the Certificate to System macOS จะขอรหัสผ่านผู้ดูแลระบบและเพิ่มใบรับรองลงใน System keychain เป็น root ที่เชื่อถือ — ไม่ต้องทำขั้นตอนใน Keychain Access ด้วยตนเอง
- Export the Certificate บันทึกสำเนา
.pemสำหรับติดตั้งบนอุปกรณ์อื่น
หากแอปใดยังคงล้มเหลวทั้งที่ใบรับรองถูกเชื่อถือแล้ว มันมักปักหมุด (pin) ใบรับรองของตัวเอง — ยกเว้นโฮสต์ของมันจาก hostname ด้วยคำนำหน้า - แทนที่จะฝืนสู้
ตัวเลือก
skip-server-cert-verify
skip-server-cert-verify = true
ไม่ตรวจสอบใบรับรองของโฮสต์ระยะไกลขณะทำ MitM เมื่อเปิดใช้งาน Chute จะยอมรับใบรับรองใดๆ ที่นำเสนอโดยเซิร์ฟเวอร์อัปสตรีม รวมถึงใบรับรองที่ลงนามด้วยตนเองหรือไม่ถูกต้อง สิ่งนี้มีประโยชน์สำหรับสภาพแวดล้อมการพัฒนาแต่ลดความปลอดภัย
[MITM]
enable = true
ca-p12 = MIIJtQ.........
ca-passphrase = password
skip-server-cert-verify = true
hostname = *google.com
หมายเหตุด้านความปลอดภัย: การเปิดใช้งาน
skip-server-cert-verifyทำให้การเชื่อมต่อ MitM เสี่ยงต่อการโจมตีแบบ man-in-the-middle ระหว่าง Chute และเซิร์ฟเวอร์อัปสตรีม เปิดใช้งานเฉพาะสำหรับเครือข่ายที่เชื่อถือได้หรือเพื่อการพัฒนาเท่านั้น
หน้านี้เป็นฉบับแปลจากเวอร์ชันภาษาอังกฤษ หากเนื้อหาไม่ตรงกัน ให้ยึดเวอร์ชันภาษาอังกฤษเป็นหลัก