Mam certyfikat z podpisem własnym w punkcie końcowym mojego interfejsu API. Próbuję przetestować niektóre rzeczy za pomocą symulatora, ale otrzymuję „niezaufany certyfikat serwera”.
Próbowałem użyć safari na symulatorze, aby pobrać plik .crt, ale to nie działa.
Skąd iPhone Simulator bierze swój brelok? Jak mogę dodać zaufany certyfikat, aby moja aplikacja działała?
AKTUALIZACJA
Uruchomiłem go, tworząc CA, a następnie dodając certyfikat CA za pomocą narzędzia do obsługi iPhone'a. Wtedy mogłem mieć certyfikat podpisany tym certyfikatem CA na serwerze API i NSConnection po prostu działało. Z jakiegoś powodu nie udało mi się uruchomić go przy użyciu certyfikatu z podpisem własnym. Muszę spróbować ponownie, używając oprogramowania do obsługi administracyjnej.
Moje prawdziwe pytanie brzmi: jak sprawić, by to działało na symulatorze? Myślę, że symulator używa pęku kluczy z rzeczywistego komputera.
Odpowiedzi:
Tylko dla informacji, jeśli ktoś nadal napotyka ten problem:
po prostu przeciągnij i upuść swoje pliki .cer do uruchomionego okna Symulatora. Zobaczysz migające Safari, a następnie okno dialogowe importowania twojego certyfikatu (lub urzędu certyfikacji) ...
Praca dla symulatora iOS 7 (i myślę, że działała też na iOS 6).
źródło
Dla tych, którzy stwierdzili, że przeciąganie i upuszczanie certyfikatu w symulatorze nie działa, wprowadzono ostatnią zmianę, która dodaje dodatkowy krok .
Symulatorowi należy wyraźnie poinstruować, aby ufał głównemu urzędowi certyfikacji. Zrób to, przechodząc do:
Zobacz pełną odpowiedź tutaj :
źródło
Certificate Trust Settings
? Mój profil jest dodawany i zawiera certyfikat - to był po prostu pracuje mniej niż miesiąc temu. Zresetuj moje pamięci podręczne symulatora, teraz certyfikat został dodany, ale nie ma opcji, aby w pełni mu zaufać.basicConstraints = CA:TRUE
podczas generowania certyfikatu za pomocą openssl. W przeciwnym razie nie okaże się, że jest zaufany.Miałem ten sam problem od miesięcy i dzisiaj KOŃCOWO rozwiązałem go:
ADVTrustStore
Będziesz chciał użyć projektu o nazwie ADVTrustStore z github. Robi trochę fantazyjnej magii, ale poprawnie zainstaluje certyfikaty w twoim głównym magazynie zaufania w symulatorze.
Kroki, aby zainstalować niestandardowy certyfikat
# 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
Korzystając z tego procesu, mogłem uzyskać obrazy GoogleStreetView do prawidłowego renderowania, gdy znajdowałem się za firmową zaporą sieciową przy użyciu protokołu SSL, rezygnując z certyfikatów z podpisem własnym
tło
Używałem CharlesProxy i zauważyłem, że poprawnie instaluje certyfikaty w symulatorze, ale nie pojawiły się one w sekcji Ustawienia - Profile . Następnie po kilku poszukiwaniach odkryłem to narzędzie. Prawdopodobnie istnieje kilka innych narzędzi, ale w moim przypadku przeciąganie i upuszczanie nigdy nie działało poprawnie we wszystkich przypadkach. Safari byłoby w porządku, ale nie moje aplikacje.
źródło
Każdy, kto korzysta z OS X Catalina, powinien sprawdzić: https://forums.developer.apple.com/thread/124056 .
Catalina obecnie blokuje dostęp do folderu Pulpit, Dokumenty i Pobrane. Przeniosłem pliki certyfikatów do folderu współdzielonego i stamtąd przeciągam i upuszczam pliki do symulatora.
źródło
Przyjrzyj się skryptowi powłoki, którego używa Charles do zainstalowania własnego certyfikatu z podpisem własnym w pęku kluczy symulatora. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
Zobacz też:
Wygląda na to, że zainstalowanie własnego certyfikatu w symulatorze może wymagać zainstalowania go na urządzeniu za pośrednictwem przeglądarki Safari, a następnie skopiowania wynikowego wiersza z urządzenia
TrustStore.sqlite3
do symulatora.źródło
Używając iPhone Backup Extractor , skopiowałem iPhone'a
TrustStore.sqlite3
do~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains
, nadpisując istniejący plik. Próbowałem wstawić tylko jeden wiersz z następującym sqlite, ale nie mogłem go uruchomić.sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3 sqlite3>.mode insert sqlite3>.output working.sql sqlite3>select * from tsettings; sqlite3>.quit
Teraz
working.sql
ma całą zawartość tabeli tsettings (w moim przypadku 1 wiersz).sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3 sqlite3>INSERT INTO tsettings VALUES(X'... sqlite3>.quit
Ponownie, powyższe polecenia sqlite nie działały dla mnie, ale mogą być dobrym punktem wyjścia dla kogoś innego. Kopiowanie całości
TrustStore.sqlite3
z kopii zapasowej do symulatora działało dobrze.źródło
Spójrz na
iostrust
klejnot Ruby: http://github.com/yageek/iostrustźródło
Przeciąganie i upuszczanie działało, ale nie działało na XCode 12. Udało mi się otworzyć przeglądarkę Safari w Symulatorze, a następnie wpisać adres URL pliku z certyfikatem .crt. Dawny.
file:///Users/[folder_path]/[certificate.crt]
Następnie musisz przejść do ustawień symulatora i zainstalować certyfikat, przechodząc do sekcji Ogólne> Profile.
źródło