İphone Simulator'a kendinden imzalı bir sertifika mı ekliyorsunuz?


90

API'min uç noktasında kendinden imzalı bir sertifikam var. Simülatörü kullanarak bazı şeyleri test etmeye çalışıyorum ama "güvenilmeyen sunucu sertifikası" alıyorum.

.Crt dosyasını indirmek için simülatörde safari kullanmayı denedim, ancak bu işe yaramıyor.

İPhone Simulator anahtarlığını nereden alıyor? Başvurumun çalışması için nasıl güvenilir bir sertifika ekleyebilirim?

GÜNCELLEME

Bir CA oluşturarak ve ardından iPhone sağlama aracını kullanarak bir CA sertifikası ekleyerek çalışmasını sağladım. Daha sonra API sunucusunda bu CA sertifikası ile imzalanmış bir sertifika alabildim ve NSConnection şimdi çalıştı. Nedense kendi kendine imzalanan bir sertifika kullanarak onu çalıştırmayı başaramadım. Ön hazırlık yazılımını kullanarak bunu yeniden denemem gerekiyor.

Asıl sorum, bunu simülatörde nasıl çalıştıracağım? Simülatörün gerçek bilgisayarın anahtar zincirini kullandığını düşünürdüm.


1
Yakın zamanda bunu, geliştirme Mac'indeki oturum açma anahtar zincirine aktarılan bir CA sertifikasının güvendiği bir ana bilgisayarla buldum. (Yani, yerel Safari sitem siteye güveniyor, ancak simülatöre güvenmiyor.) Simülatörle çalışmamasına şaşırdım. Simülatördeki güvenilir sertifikaları değiştirmek için iPhone sağlama aracı nasıl kullanılır?
mpontillo

Yanıtlar:


115

Sadece Bilgi için, biri hala bu sorunla karşılaşırsa:

.cer Dosyalarınızı çalışan Simülatör pencerenize sürükleyip bırakmanız yeterlidir. Safari'nin yanıp söndüğünü ve ardından Sertifikanız (veya Sertifika Yetkiliniz) için içe aktarma iletişim kutusunu göreceksiniz ...

İOS 7 Simulator için çalışmak (ve bence iOS 6 için de işe yaradı).


3
Sürükleyip bırakmak, iOS 7 simülatörü için yeterince iyi çalışıyor. İOS 6.0 / 6.1 simülatörlerinde çalışmadığını doğrulayabilirim.
John Bowers

2
ben miyim yoksa Xcode 6'ya yükselttiğim için, bu sürükle ve bırak özelliği artık yalnızca simülatörün iOS 8 sürümünde çalışıyor. İPhone 5s iOS 7 ve iOS 7.1 simülatörü denendi, sertifikayı simülatör penceresine sürüklediğimde hiçbir şey olmuyor. Ve şimdi takıldım ve uygulamamı iOS 8 dışında hiçbir şeyde test edemiyorum.
Fred

2
İOS 7 ve 7.1 için bir geçici çözüm bulduk: .cer dosyasını erişilebilir bir web sunucusuna koyun (gerekiyorsa uygulamayı / x-x509-ca-cert mime türünü ekleyin) ve sertifikayı indirmek için simülatörde Safari'yi kullanın web sunucusundan. Daha sonra sizden sürükleyip bırakmışsınız gibi yüklemenizi isteyecektir.
Fred

3
Sen bir tanrısın dostum
CommaToast

1
sen adamsın! Bunu yapmanın hızlı bir yolu olması gerektiğini biliyordum.
pqsk

45

Simülatör üzerindeki sertifikanın sürüklenip bırakılmasının işe yaramadığını fark edenler için, fazladan bir adım ekleyen son bir değişiklik oldu .

Simulatöre açıkça kök CA'ya güvenmesi söylenmelidir. Bunu şu adrese giderek yapın:

Genel -> Hakkında -> Sertifika Güven Ayarları -> Belirli sertifikanız için "Kök Sertifika için Tam Güveni Etkinleştir"

Tam cevaba buradan bakın :


13
"Kök Sertifika için Tam Güveni Etkinleştir" seçeneği, ios 10.3 çalıştıran simülatörümde hiçbir şekilde bulunmuyor
Jesus Rodriguez

1
Bu sorunu hiç çözdünüz mü - altında listelenmeyen kök sertifika Certificate Trust Settings? Profilim eklendi ve bir sertifika içeriyor - bu sadece bir aydan kısa bir süre önce çalışıyordu. Simülatör önbelleklerimi sıfırla, şimdi sertifika eklendi, ancak tamamen güvenme seçeneği yok.
chrisp

3
Benim durumumda, "Kök Sertifika için Tam Güveni Etkinleştir" seçeneği yalnızca kök sertifikalar için görünür. Ara veya yaprak sertifikalarda görünmez.
John Girata

1
Ayrıca sertifikanın CA temel kısıtlama seçeneğinin true olarak ayarlanması gerektiğini de buldum: basicConstraints = CA:TRUEopenssl kullanarak sertifika oluştururken. Aksi takdirde güvenilir görünmez.
sandinmyjoints

3
Görünüşe göre 12.2'de (muhtemelen önceki sürümler de) prosedür artık genel> profillere gitmek, sertifikayı seçmek ve sağ üstteki yüklemeye
basmak

23

Aynı sorunu aylardır yaşıyordum ve bugün sonunda şunu çözdüm:

ADVTrustStore

Github'dan ADVTrustStore adlı bir proje kullanmak isteyeceksiniz . Biraz süslü sihir yapar, ancak sertifikaları simülatördeki kök güven deponuza doğru şekilde yükler.

Özel bir sertifika yükleme adımları

# 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

Bu işlemi kullanarak, kendinden imzalı sertifikalarla SSL yeniden imzalayarak kurumsal bir güvenlik duvarının arkasındayken GoogleStreetView görüntülerinin doğru şekilde işlenmesini sağlayabildim

Arka fon

CharlesProxy kullanıyordum ve sertifikaların Simulator'a doğru şekilde yüklendiğini fark ettim ancak bunlar Ayarlar - Profiller bölümünde görünmüyordu . Sonra biraz araştırdıktan sonra bu aracı keşfettim. Muhtemelen orada birkaç başka araç var, ancak benim durumumda sürükle ve bırak hiçbir zaman tüm durumlarda doğru şekilde çalışmadı. Safari iyi olurdu ama benim uygulamalarım değil.


3
İPUCU: Yeni sertifikayı yüklemek için simülatörü yeniden başlatın.
Kiko Seijo

1
Bu Xcode 10.1 ve iPhone 5s 12.1 simülatörü ile benim için hile yaptı. Sadece komut dosyasına sertifikayı doğru simülatöre yüklemesini söylediğinizden emin olmalısınız. Bunu badssl.test ile birlikte kullanıyorsanız (yani yerel olarak docker'da çalışan badssl), gerçek sertifika dışındaki her şeyi kaldırmak için .pem'i hacklemeniz gerekecektir.
Andrew Ebling

bu hayatımı kurtardı. ios'a kendinden imzalı sertifikaların yüklenmesi için neredeyse hiç topluluk desteği yok. teşekkür ederim!
lsimonetti

İOS 12.4 ile iPhone X için Simulator 10.3'te çalıştığını onaylıyorum.
Sergei Basharov


9

Charles'ın kendi imzalı sertifikalarını simülatörün anahtar zincirine yüklemek için kullandığı kabuk komut dosyasına bir göz atın. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Ayrıca bakınız:

Görünüşe göre simülatöre kendi sertifikanızı yüklemek, onu Safari aracılığıyla bir cihaza yüklemeyi ve ardından ortaya çıkan satırı cihazlardan TrustStore.sqlite3simülatörün içine kopyalamayı gerektirebilir .


@nailer yanıtı, TrustStore.sqlite3'teki bu blobların formatının opak olduğunu bildiğim kadarıyla bazı daha fazla referansla güncellendi. ve elde edilen TrustStore satırını simülatörüne kopyalamak.
Jonah

2

İPhone Backup Extractor kullanarak , iPhone'umu TrustStore.sqlite3içine kopyaladım ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychainsve mevcut dosyanın üzerine yazdım . Aşağıdaki sqlite ile sadece tek bir satır eklemeye çalıştım, ancak çalışmayı başaramadım.

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

Şimdi working.sqltsettings tablosunun tüm içeriğine sahip (benim durumumda, 1 satır).

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

Yine, yukarıdaki sqlite komutları benim için işe yaramadı, ancak başkası için iyi bir başlangıç ​​noktası olabilir. Tümü TrustStore.sqlite3yedeklemeden simülatöre kopyalamak gayet iyi çalıştı.



0

Sürükleyip bırakmak eskiden işe yarıyordu ama benim için XCode 12'de çalışmadı. Benim için işe yarayan şey, Simulator'da Safari tarayıcısını açmak ve ardından .crt sertifika dosyası için dosya URL'sini yazmaktı. Örn.

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

Bundan sonra Simülatör Ayarlarına gitmeniz ve Genel> Profiller bölümüne giderek sertifikayı yüklemeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.