# การติดตั้งใบรับรอง 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 ได้โดยตรง เมื่อติดตั้งแล้วใบรับรองจะคงอยู่ถาวร ไม่จำเป็นต้องติดตั้งซ้ำ


```python
d.install_ca_certificate(cert_path)
```

## การถอนการติดตั้งใบรับรอง Root

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

```python
d.uninstall_ca_certificate(cert_path)
```

โค้ดฉบับเต็มมีดังนี้ (เราจะไม่สร้างอินสแตนซ์ของอุปกรณ์ `d` ซ้ำอีก)

```python
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 กำลังดักฟังอยู่ได้