Menambahkan sertifikat yang ditandatangani sendiri ke iPhone Simulator?

90

Saya memiliki sertifikat yang ditandatangani sendiri di titik akhir API saya. Saya mencoba menguji beberapa hal menggunakan simulator tetapi saya mendapatkan "sertifikat server tidak tepercaya".

Saya telah mencoba menggunakan safari di simulator untuk mengunduh file .crt, tetapi sepertinya tidak berhasil.

Dari mana iPhone Simulator mendapatkan gantungan kunci? Bagaimana cara menambahkan sertifikat tepercaya agar aplikasi saya berfungsi?

MEMPERBARUI

Saya membuatnya berfungsi dengan membuat CA dan kemudian menambahkan sertifikat CA menggunakan alat penyediaan iPhone. Kemudian saya dapat memiliki sertifikat yang ditandatangani oleh sertifikat CA itu di server API dan NSConnection baru saja berfungsi. Saya tidak bisa membuatnya berfungsi menggunakan sertifikat yang ditandatangani sendiri karena beberapa alasan. Saya perlu mencoba lagi menggunakan perangkat lunak penyediaan.

Pertanyaan sebenarnya saya adalah bagaimana cara membuatnya bekerja di simulator? Saya akan berpikir bahwa simulator menggunakan gantungan kunci komputer yang sebenarnya.

jr.
sumber
1
Saya baru-baru ini mencapai ini dengan host yang dipercaya oleh sertifikat CA yang diimpor ke rantai kunci masuk di Mac pengembangan. (Artinya, Safari lokal saya mempercayai situs tersebut, tetapi tidak mempercayai simulatornya.) Saya terkejut karena situs tersebut tidak berfungsi dengan simulator. Bagaimana cara menggunakan alat penyediaan iPhone untuk memanipulasi sertifikat tepercaya di simulator?
mpontillo

Jawaban:

115

Hanya untuk Info, jika seseorang masih mengalami masalah itu:

cukup seret & jatuhkan File .cer Anda ke jendela Simulator yang sedang berjalan. Anda akan melihat Safari berkedip dan kemudian dialog impor untuk Sertifikat Anda (atau Otoritas Sertifikat) ...

Bekerja untuk iOS 7 Simulator (dan menurut saya juga berfungsi untuk iOS 6).

seafoxx
sumber
3
Menyeret dan melepas berfungsi dengan baik untuk simulator iOS 7. Saya dapat memverifikasi bahwa itu TIDAK berfungsi pada simulator iOS 6.0 / 6.1.
John Bowers
2
apakah ini saya atau karena saya telah beralih ke Xcode 6, hal seret & lepas ini sekarang hanya berfungsi pada simulator versi iOS 8. Mencoba simulator iPhone 5s iOS 7 dan iOS 7.1, tidak ada yang terjadi saat saya menyeret sertifikat ke jendela simulator. Dan sekarang saya macet dan tidak dapat menguji aplikasi saya di apa pun kecuali iOS 8.
Fred
2
Menemukan solusi untuk iOS 7 & 7.1: meletakkan file .cer Anda di server web yang dapat dijangkau, (menambahkan jenis mime application / x-x509-ca-cert jika diperlukan) dan gunakan Safari di simulator untuk mendownload sertifikat dari server web. Ini kemudian akan meminta Anda untuk menginstalnya seperti jika Anda telah menyeret dan menjatuhkannya.
Fred
3
Anda adalah tuhan, teman saya
CommaToast
1
kamulah orangnya! Saya tahu pasti ada cara cepat untuk melakukan ini.
pqsk
45

Bagi mereka yang menemukan bahwa menyeret dan melepaskan sertifikat di Simulator tidak berfungsi, ada perubahan terbaru yang menambahkan langkah ekstra .

Simulator harus secara eksplisit diberitahu untuk mempercayai root CA. Lakukan ini dengan mengunjungi:

Umum -> Tentang -> Pengaturan Kepercayaan Sertifikat -> "Aktifkan Kepercayaan Penuh untuk Sertifikat Root" untuk sertifikat khusus Anda

Lihat jawaban lengkapnya di sini :

Gautham C.
sumber
13
Opsi "Aktifkan Kepercayaan Penuh untuk Sertifikat Root" sama sekali tidak ada di simulator saya yang menjalankan iOS 10.3
Jesus Rodriguez
1
Apakah Anda pernah menyelesaikan masalah ini - sertifikat akar tidak terdaftar di bawah Certificate Trust Settings? Profil saya ditambahkan dan menyertakan sertifikat - ini baru berfungsi kurang dari sebulan yang lalu. Setel ulang cache simulator saya, sekarang sertifikat ditambahkan tetapi tidak ada opsi untuk mempercayainya sepenuhnya.
chrisp
3
Dalam kasus saya, opsi "Aktifkan Kepercayaan Penuh untuk Sertifikat Akar" hanya muncul untuk sertifikat akar. Ini tidak muncul untuk sertifikat perantara atau daun.
John Girata
1
Saya juga menemukan bahwa sertifikat harus memiliki opsi batasan dasar CA yang disetel ke true: basicConstraints = CA:TRUEsaat membuat sertifikat menggunakan openssl. Jika tidak, itu tidak akan terlihat dipercaya.
sandinmyjoints
3
Tampaknya pada 12.2 (mungkin versi sebelumnya juga) prosedurnya sekarang untuk pergi ke profil umum>, pilih sertifikat, dan tekan instal di kanan atas
MaxPRafferty
23

Saya mengalami masalah yang sama selama berbulan-bulan dan hari ini saya AKHIRNYA menyelesaikannya dengan:

ADVTrustStore

Anda akan ingin menggunakan proyek bernama ADVTrustStore dari github. Itu melakukan sihir yang mewah tetapi itu akan menginstal sertifikat dengan benar ke toko kepercayaan root Anda di simulator.

Langkah-langkah untuk memasang sertifikat khusus

# 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

Dengan menggunakan proses ini saya bisa mendapatkan gambar GoogleStreetView untuk dirender dengan benar saat berada di balik firewall perusahaan menggunakan SSL mengundurkan diri dengan sertifikat yang ditandatangani sendiri

Latar Belakang

Saya menggunakan CharlesProxy dan saya perhatikan itu menginstal sertifikat dengan benar ke dalam Simulator tetapi mereka tidak muncul di bagian Pengaturan - Profil . Kemudian setelah beberapa pencarian saya menemukan alat ini. Mungkin ada beberapa alat lain di luar sana tetapi dalam kasus saya drag-and-drop tidak pernah berfungsi dengan benar untuk semua kasus. Safari akan baik-baik saja tetapi tidak untuk aplikasi saya.

Astaga
sumber
3
TIPS: mulai ulang simulator untuk memasang sertifikat baru.
Kiko Seijo
1
Ini melakukan trik untuk saya dengan simulator Xcode 10.1 dan iPhone 5s 12.1. Anda hanya perlu memastikan bahwa Anda memberi tahu skrip untuk memasang sertifikat di simulator yang tepat. Jika Anda menggunakan ini bersama dengan badssl.test (mis. Badssl berjalan secara lokal di buruh pelabuhan), Anda perlu meretas .pem untuk menghapus semuanya kecuali sertifikat yang sebenarnya.
Andrew Ebling
ini menyelamatkan hidup saya. hampir tidak ada dukungan komunitas untuk memasang sertifikat yang ditandatangani sendiri ke dalam ios. Terima kasih!
lsimonetti
Saya mengonfirmasi bahwa ini berfungsi di Simulator 10.3 untuk iPhone X dengan iOS 12.4.
Sergei Basharov
10

Untuk siapa pun yang menggunakan OS X Catalina, harap periksa ini: https://forums.developer.apple.com/thread/124056 .

Catalina saat ini memblokir akses ke folder Desktop, Dokumen, dan Unduhan. Saya memindahkan file sertifikat ke folder Bersama dan menyeret dan melepaskan file ke simulator dari sana.

KnightCavalry
sumber
3
Tuhan memberimu kesehatan :)
Booharin
9

Lihat skrip shell yang digunakan Charles untuk memasang sertifikat yang ditandatangani sendiri ke dalam keychain simulator. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Lihat juga:

Sepertinya menginstal sertifikat Anda sendiri di simulator mungkin memerlukan menginstalnya di perangkat melalui Safari dan kemudian menyalin baris yang dihasilkan dari perangkat TrustStore.sqlite3ke simulator.

Yunus
sumber
Jawaban @nailer diperbarui dengan beberapa referensi lagi, sejauh yang saya tahu format blob tersebut di TrustStore.sqlite3 tidak tembus cahaya (dan berpotensi dapat berubah) sehingga pendekatan yang diambil orang lain tampaknya adalah menginstal sertifikat pada perangkat melalui Safari dan menyalin baris TrustStore yang dihasilkan ke simulator mereka.
Yunus
2

Menggunakan iPhone Backup Extractor , saya menyalin saya iPhone TrustStore.sqlite3ke ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains, Timpa file yang ada. Saya mencoba hanya menyisipkan satu baris dengan sqlite berikut, tetapi saya tidak bisa membuatnya berfungsi.

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

Sekarang, working.sqlmemiliki seluruh isi tabel tsettings (dalam kasus saya, 1 baris).

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

Sekali lagi, perintah sqlite di atas tidak berfungsi untuk saya, tetapi mungkin merupakan titik awal yang baik untuk orang lain. Menyalin keseluruhan TrustStore.sqlite3dari cadangan ke simulator berfungsi dengan baik.

Heath Borders
sumber
0

Menyeret dan melepas dulu berfungsi tetapi tidak berhasil pada XCode 12 untuk saya. Yang berhasil bagi saya adalah membuka browser Safari di Simulator dan kemudian mengetik URL file untuk file sertifikat .crt. Ex.

file:///Users/[folder_path]/[certificate.crt]

Setelah itu Anda harus pergi ke Pengaturan Simulator dan menginstal sertifikat dengan menavigasi ke bagian Umum> Profil.

Tharindu Madushanka
sumber