Thêm chứng chỉ tự ký vào iphone Simulator?


87

Tôi có chứng chỉ tự ký ở điểm cuối API của mình. Tôi đang cố gắng kiểm tra một số thứ bằng trình mô phỏng nhưng nhận được "chứng chỉ máy chủ không đáng tin cậy".

Tôi đã cố gắng sử dụng safari trên trình mô phỏng để tải xuống tệp .crt, nhưng điều đó dường như không hoạt động.

IPhone Simulator lấy keychain từ đâu? Làm cách nào để thêm chứng chỉ đáng tin cậy để ứng dụng của tôi hoạt động?

CẬP NHẬT

Tôi đã làm cho nó hoạt động bằng cách tạo CA và sau đó thêm chứng chỉ CA bằng công cụ cung cấp iPhone. Sau đó, tôi đã có thể có chứng chỉ được ký bởi chứng chỉ CA đó trên máy chủ API và NSConnection vừa hoạt động. Tôi không thể làm cho nó hoạt động bằng chứng chỉ tự ký vì một số lý do. Tôi cần thử lại điều này bằng cách sử dụng phần mềm cung cấp.

Câu hỏi thực sự của tôi là làm cách nào để làm cho điều này hoạt động trên trình mô phỏng? Tôi nghĩ rằng trình mô phỏng sử dụng chuỗi khóa của máy tính thực tế.


1
Gần đây tôi đã đạt được điều này với một máy chủ được tin cậy bởi chứng chỉ CA đã được nhập vào chuỗi khóa đăng nhập trên máy Mac đang phát triển. (Có nghĩa là, Safari địa phương của tôi tin tưởng trang web, nhưng không tin tưởng trình mô phỏng.) Tôi rất ngạc nhiên khi nó không hoạt động với trình mô phỏng. Làm thế nào để một người sử dụng công cụ cung cấp iPhone để thao tác với các chứng chỉ đáng tin cậy trên trình mô phỏng?
mpontillo

Câu trả lời:


113

Chỉ dành cho Thông tin, nếu ai đó vẫn gặp sự cố đó:

chỉ cần kéo và thả Tệp .cer của bạn vào cửa sổ Trình mô phỏng đang chạy của bạn. Bạn sẽ thấy Safari nhấp nháy và sau đó hộp thoại nhập cho Chứng chỉ của bạn (hoặc Tổ chức phát hành chứng chỉ) ...

Làm việc cho Trình mô phỏng iOS 7 (và tôi nghĩ cũng đã hoạt động cho iOS 6).


3
Kéo và thả hoạt động tốt cho trình mô phỏng iOS 7. Tôi có thể xác minh rằng nó KHÔNG hoạt động trên trình mô phỏng iOS 6.0 / 6.1.
John Bowers

2
là tôi hay vì tôi đã nâng cấp lên Xcode 6, tính năng kéo và thả này hiện chỉ hoạt động trên phiên bản iOS 8 của trình mô phỏng. Đã thử trình mô phỏng iPhone 5s iOS 7 và iOS 7.1, không có gì xảy ra khi tôi kéo chứng chỉ vào cửa sổ trình mô phỏng. Và bây giờ tôi bị mắc kẹt và không thể kiểm tra ứng dụng của mình trong bất kỳ thứ gì ngoại trừ iOS 8.
Fred

2
Đã tìm ra giải pháp cho iOS 7 & 7.1: đặt tệp .cer của bạn trên máy chủ web có thể truy cập, (thêm loại mime ứng dụng / x-x509-ca-cert nếu cần) và sử dụng Safari trên trình mô phỏng để tải xuống chứng chỉ từ máy chủ web. Sau đó, nó sẽ yêu cầu bạn cài đặt nó giống như khi bạn đã kéo và thả nó.
Fred

3
Bạn là một vị thần, bạn của tôi
CommaToast

1
bạn là người đàn ông! Tôi biết phải có một cách nhanh chóng để làm điều này.
pqsk

44

Đối với những người nhận thấy rằng việc kéo và thả chứng chỉ trên Trình mô phỏng không hoạt động, đã có một thay đổi gần đây bổ sung thêm một bước .

Trình mô phỏng phải được yêu cầu rõ ràng để tin tưởng CA gốc. Làm điều này bằng cách đi tới:

Chung -> Giới thiệu -> Cài đặt Tin cậy Chứng chỉ -> "Bật Tin cậy Hoàn toàn cho Chứng chỉ gốc" cho chứng chỉ cụ thể của bạn

Xem câu trả lời đầy đủ tại đây :


13
"Bật toàn Trust cho chứng chỉ gốc" tùy chọn là không có bất cứ điều gì về mô phỏng chạy ios tôi 10,3
Jesus Rodriguez

1
Bạn đã bao giờ giải quyết vấn đề này - chứng chỉ gốc không được liệt kê trong Certificate Trust Settingschưa? Hồ sơ của tôi đã được thêm vào và bao gồm chứng chỉ - chứng chỉ này mới hoạt động cách đây chưa đầy một tháng. Đặt lại bộ nhớ đệm trình mô phỏng của tôi, bây giờ chứng chỉ đã được thêm vào nhưng không có tùy chọn nào để hoàn toàn tin tưởng vào nó.
chrisp

3
Trong trường hợp của tôi, tùy chọn "Bật Tin cậy Hoàn toàn cho Chứng chỉ gốc" chỉ xuất hiện cho các chứng chỉ gốc. Nó không xuất hiện cho các chứng chỉ trung cấp hoặc lá.
John Girata

1
Tôi cũng thấy rằng chứng chỉ phải có tùy chọn ràng buộc cơ bản CA được đặt thành true: basicConstraints = CA:TRUEkhi tạo cert bằng openssl. Nếu không, nó sẽ không hiển thị là đáng tin cậy.
sandinmyjoints

3
Dường như trên 12,2 (có thể là phiên bản trước cũng) thủ tục tại là để đi đến chung> cấu hình, chọn các CERT, và nhấn cài đặt phía trên bên phải
MaxPRafferty

23

Tôi đã gặp vấn đề tương tự trong nhiều tháng và hôm nay tôi ĐÃ GIẢI QUYẾT ĐƯỢC nó với:

ADVTrustStore

Bạn sẽ muốn sử dụng một dự án có tên là ADVTrustStore từ github. Nó thực hiện một số phép thuật lạ mắt nhưng nó sẽ cài đặt chính xác các chứng chỉ vào kho lưu trữ tin cậy gốc của bạn trên trình mô phỏng.

Các bước cài đặt chứng chỉ tùy chỉnh

# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git

# Enter the repo directory
cd ADVTrustStore/

# Copy your .crt file 
cp somewhere/something.crt my.crt

# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM

# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem

Sử dụng quy trình này, tôi có thể khiến hình ảnh GoogleStreetView hiển thị chính xác khi ở sau tường lửa công ty sử dụng SSL từ chức với chứng chỉ tự ký

Lý lịch

Tôi đang sử dụng CharlesProxy và tôi nhận thấy rằng nó đã được cài đặt chính xác các chứng chỉ vào Trình mô phỏng nhưng chúng không hiển thị trong phần Cài đặt - Hồ sơ . Sau đó, sau một số tìm kiếm tôi đã phát hiện ra công cụ này. Có thể có một vài công cụ khác nhưng trong trường hợp của tôi, tính năng kéo và thả không bao giờ hoạt động chính xác cho mọi trường hợp. Safari sẽ ổn nhưng không phải ứng dụng của tôi.


3
MẸO: khởi động lại trình mô phỏng để cài đặt chứng chỉ mới.
Kiko Seijo

1
Điều này đã làm được mẹo cho tôi với trình mô phỏng Xcode 10.1 và iPhone 5s 12.1. Bạn chỉ cần đảm bảo rằng bạn yêu cầu tập lệnh cài đặt chứng chỉ trong trình mô phỏng phù hợp. Nếu bạn đang sử dụng điều này kết hợp với badssl.test (tức là badssl chạy cục bộ trong docker), bạn sẽ cần phải hack .pem để xóa mọi thứ ngoại trừ chứng chỉ thực.
Andrew Ebling

điều này đã cứu mạng tôi. hầu như không có sự hỗ trợ của cộng đồng để cài đặt chứng chỉ tự ký vào iOS. cảm ơn bạn!
lsimonetti

Tôi xác nhận rằng nó hoạt động trong Simulator 10.3 cho iPhone X với iOS 12.4.
Sergei Basharov

9

Hãy xem tập lệnh shell mà Charles sử dụng để cài đặt chứng chỉ tự ký của họ vào chuỗi khóa của trình mô phỏng. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-application/

Xem thêm:

Có vẻ như việc cài đặt chứng chỉ của riêng bạn trong trình mô phỏng có thể yêu cầu cài đặt chứng chỉ đó trên thiết bị qua Safari và sau đó sao chép hàng kết quả từ thiết bị TrustStore.sqlite3vào trình mô phỏng.


Câu trả lời @nailer được cập nhật với một số tài liệu tham khảo khác, theo như tôi biết định dạng của các đốm màu đó trong TrustStore.sqlite3 là không rõ ràng (và có khả năng thay đổi) nên cách mà những người khác đã thực hiện dường như là cài đặt cert trên thiết bị thông qua Safari và sao chép hàng TrustStore kết quả vào trình mô phỏng của họ.
Jonah

8

Đối với bất kỳ ai sử dụng OS X Catalina, vui lòng kiểm tra địa chỉ này: https://forums.developer.apple.com/thread/124056 .

Catalina hiện đang chặn quyền truy cập vào thư mục Desktop, Documents và Downloads. Tôi đã di chuyển các tệp chứng chỉ vào thư mục Chia sẻ và kéo và thả các tệp vào trình mô phỏng từ đó.


3
Chúa ban cho bạn sức khỏe :)
Booharin

2

Sử dụng iPhone Backup Extractor , tôi đã sao chép iPhone của mình TrustStore.sqlite3vào ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains, ghi đè lên tệp hiện có. Tôi đã cố gắng chỉ chèn một hàng duy nhất với sqlite sau đây, nhưng tôi không thể làm cho nó hoạt động.

sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit

Bây giờ, working.sqlcó toàn bộ nội dung của bảng cài đặt (trong trường hợp của tôi là 1 hàng).

sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit

Một lần nữa, các lệnh sqlite ở trên không hoạt động với tôi, nhưng có thể là một điểm khởi đầu tốt cho người khác. Sao chép toàn bộ TrustStore.sqlite3từ bản sao lưu vào trình mô phỏng hoạt động tốt.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.