Trước Android KitKat, bạn phải root thiết bị của mình để cài đặt chứng chỉ mới.
Từ Android KitKat (4.0) cho đến Nougat (7.0) đều có thể và dễ dàng. Tôi đã có thể cài đặt chứng chỉ Proxy gỡ lỗi Charles Web trên thiết bị chưa root của mình và đánh hơi thành công lưu lượng SSL.
Trích xuất từ http://wiki.cacert.org/FAQ/ImportRootCert
Trước phiên bản Android 4.0, với phiên bản Android Gingerbread & Froyo, đã có một tệp chỉ đọc (/system/etc/security/cacerts.bks) chứa kho tin cậy với tất cả các chứng chỉ CA ('system') được tin cậy theo mặc định trên Android. Cả ứng dụng hệ thống và tất cả các ứng dụng được phát triển với SDK Android đều sử dụng điều này. Sử dụng các hướng dẫn sau khi cài đặt chứng chỉ CAcert trên Android Gingerbread, Froyo, ...
Bắt đầu từ Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' & Android 4.4 'KitKat'), các chứng chỉ tin cậy của hệ thống nằm trên phân vùng hệ thống (chỉ đọc) trong thư mục '/ system / etc / bảo mật / 'như các tệp riêng lẻ. Tuy nhiên, giờ đây người dùng có thể dễ dàng thêm chứng chỉ 'người dùng' của riêng mình sẽ được lưu trữ trong '/ data / misc / móc khóa / certs được thêm vào'.
Chứng chỉ được cài đặt hệ thống có thể được quản lý trên thiết bị Android trong Cài đặt -> Bảo mật -> Chứng chỉ -> phần 'Hệ thống', trong khi chứng chỉ tin cậy của người dùng được đưa vào phần 'Người dùng' ở đó. Khi sử dụng chứng chỉ tin cậy của người dùng, Android sẽ buộc người dùng thiết bị Android thực hiện các biện pháp an toàn bổ sung: sử dụng mã PIN, khóa mẫu hoặc mật khẩu để mở khóa thiết bị là bắt buộc khi sử dụng chứng chỉ do người dùng cung cấp.
Cài đặt chứng chỉ CAcert làm chứng chỉ 'người dùng đáng tin cậy' rất dễ dàng. Cài đặt chứng chỉ mới dưới dạng 'chứng chỉ tin cậy hệ thống' đòi hỏi nhiều công việc hơn (và yêu cầu quyền truy cập root), nhưng nó có lợi thế là tránh yêu cầu màn hình khóa Android.
Từ Android N trở đi, nó trở nên khó khăn hơn, xem phần trích xuất này từ trang web proxy Charles :
Kể từ Android N, bạn cần thêm cấu hình vào ứng dụng của mình để có thể tin tưởng các chứng chỉ SSL được tạo bởi Charles SSL Proxying. Điều này có nghĩa là bạn chỉ có thể sử dụng SSL Proxying với các ứng dụng mà bạn kiểm soát.
Để định cấu hình ứng dụng của bạn để tin tưởng Charles, bạn cần thêm Tệp cấu hình bảo mật mạng vào ứng dụng của mình. Tệp này có thể ghi đè mặc định hệ thống, cho phép ứng dụng của bạn tin tưởng các chứng chỉ CA đã cài đặt của người dùng (ví dụ: Chứng chỉ gốc Charles). Bạn có thể chỉ định rằng điều này chỉ áp dụng trong các bản dựng gỡ lỗi của ứng dụng của bạn, để các bản dựng sản xuất sử dụng hồ sơ tin cậy mặc định.
Thêm tệp res / xml / network_security_config.xml vào ứng dụng của bạn:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Sau đó thêm một tham chiếu đến tệp này trong tệp kê khai của ứng dụng của bạn, như sau:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>