การติดตั้งใบรับรอง Root ของระบบ¶
อินเทอร์เฟซนี้ใช้สำหรับติดตั้งใบรับรอง Root ระดับระบบในระบบ Android ของคุณ และเข้ากันได้กับ Android ทุกเวอร์ชัน
คุณอาจจะสับสนว่าใบรับรอง Root ที่กล่าวถึงในที่นี้กับใบรับรองบริการของ FIRERPA คืออะไร ใบรับรองบริการของ FIRERPA ใช้สำหรับเข้ารหัสการสื่อสารระหว่าง FIRERPA กับคุณ ส่วนใบรับรอง Root ที่กล่าวถึงในที่นี้หมายถึงใบรับรอง Root ที่ติดตั้งในระบบ Android ซึ่งใช้สำหรับงานเข้ารหัสและถอดรหัสทราฟฟิกที่เกี่ยวข้องกับ HTTPS ในระบบ หากคุณเคยมีประสบการณ์เกี่ยวกับการดักจับแพ็กเก็ต (packet sniffing) ใบรับรอง Root ในที่นี้ก็คือใบรับรองที่ใช้สำหรับการดักจับแพ็กเก็ตนั่นเอง คุณสามารถใช้ API ในบทนี้ร่วมกับ API การตั้งค่าพร็อกซีเพื่อทำการดักจับแพ็กเก็ตแบบ man-in-the-middle (MITM) ได้ แน่นอนว่าคุณสามารถเลือกใช้ startmitm.py ที่เราได้เตรียมไว้ให้แล้วก็ได้ ในที่นี้เราเพียงต้องการแนะนำวิธีการทำงานของฟังก์ชันพื้นฐานนี้ให้คุณทราบ
การเตรียมการ¶
โปรดตรวจสอบให้แน่ใจว่าคุณได้เตรียมใบรับรองจาก Fiddler หรือ mitmproxy ไว้แล้ว สำหรับ mitmproxy ใบรับรองที่คุณควรใช้คือ mitmproxy-ca-cert.pem ส่วน Fiddler อาจจะเป็นไฟล์รูปแบบ .crt ซึ่งคุณสามารถส่งออกไฟล์นี้จาก Fiddler ได้โดยตรง และใช้พาธของไฟล์นี้เป็นพารามิเตอร์ได้เลยโดยไม่ต้องกังวลเรื่องการแปลงชื่อไฟล์ เพื่อหลีกเลี่ยงการเสียเวลาโดยไม่จำเป็น เราขอแนะนำให้ใช้ mitmproxy หากคุณใช้ Charles หรือโปรแกรมอื่น ๆ เราไม่สามารถรับประกันได้ว่าคุณจะตั้งค่าสำเร็จในครั้งเดียว เนื่องจากแอปพลิเคชันประเภทนี้มีการตั้งค่าที่ซับซ้อน และคุณอาจต้องเข้าใจประเภทต่าง ๆ เพื่อกำหนดค่า man-in-the-middle สำหรับ HTTPS ได้อย่างถูกต้อง หากคุณยืนยันที่จะใช้ ขอแนะนำให้ใช้ SOCKS5 ของ Charles เป็นโปรโตคอลพร็อกซี
การติดตั้งใบรับรอง Root¶
เมื่อคุณมีพาธของไฟล์ใบรับรองที่เตรียมไว้แล้ว คุณสามารถเขียนโค้ดโดยใช้อินเทอร์เฟซต่อไปนี้เพื่อติดตั้งใบรับรอง Root ของ mitmproxy ได้โดยตรง เมื่อติดตั้งแล้วใบรับรองจะคงอยู่ถาวร ไม่จำเป็นต้องติดตั้งซ้ำ
d.install_ca_certificate(cert_path)
การถอนการติดตั้งใบรับรอง Root¶
คุณสามารถเรียกใช้โค้ดต่อไปนี้เพื่อลบใบรับรอง Root ที่กำหนดเองซึ่งติดตั้งอยู่บนอุปกรณ์ เราไม่แนะนำให้คุณติดตั้งและถอนการติดตั้งบ่อยครั้ง หากไม่จำเป็นก็ไม่ต้องเรียกใช้อินเทอร์เฟซนี้
d.uninstall_ca_certificate(cert_path)
โค้ดฉบับเต็มมีดังนี้ (เราจะไม่สร้างอินสแตนซ์ของอุปกรณ์ d ซ้ำอีก)
import os
# สร้างพาธไปยังไฟล์ mitmproxy-ca-cert.pem
HOME = os.path.expanduser("~")
cert_path = os.path.join(HOME, ".mitmproxy", "mitmproxy-ca-cert.pem")
# ตัวอย่างการใช้ mitmproxy, ใช้โค้ดต่อไปนี้เพื่อติดตั้งใบรับรอง man-in-the-middle
d.install_ca_certificate(cert_path)
# ใช้โค้ดต่อไปนี้เพื่อถอนการติดตั้งใบรับรอง
d.uninstall_ca_certificate(cert_path)
อินเทอร์เฟซการติดตั้งและถอนการติดตั้งใบรับรองนี้เป็นแบบทั่วไป คุณสามารถใช้เพื่อติดตั้งใบรับรองใด ๆ ที่แอปพลิเคชันต้องการให้คุณติดตั้งได้ คุณยังสามารถใช้เพื่อติดตั้งใบรับรองที่ Fiddler/Charles ต้องการได้เช่นกัน เพียงแค่ระบุพาธของไฟล์เท่านั้น หากคุณต้องการดักจับแพ็กเก็ต หลังจากนี้คุณสามารถอ้างอิงบท การตั้งค่าพร็อกซี และตั้งค่าพร็อกซีเป็นที่อยู่ที่แอปพลิเคชัน man-in-the-middle กำลังดักฟังอยู่ได้