2012-09-27 16 views
6

Aktualnie tworzymy aplikację mobilną z wykorzystaniem Cordova/PhoneGap (najnowsza wersja) dla systemów Android i iOS. Jednym z kluczowych aspektów naszej aplikacji jest pobieranie danych z różnych źródeł zdalnych (z których jeden ma nieprawidłowy certyfikat SSL). Po upewnieniu się, że wszystkie ustawienia .plist są poprawnie ustawione (dla białej listy domeny) nasza aplikacja nie działa pod ani iOS 5 ani 6. Brak błędów w konsoli w XCode lub Safari - po prostu umiera. Aplikacja na Androida działa dobrze i działa lokalnie w przeglądarkach internetowych. Tak, kilka pytań:Problemy z Cordova/PhoneGap iOS HTTPS/SSL

Czy istnieje ustawienie .plist do ignorowania nieprawidłowych certyfikatów SSL w systemie iOS? W UIWebView widziałem jakiś kod, ale nie jesteśmy pewni, czy powinniśmy zmodyfikować ten kod i ryzykować przerwanie aplikacji w innym miejscu.

Odpowiedz

6

** Edit 13/03/14 **

Zalecanym rozwiązaniem jest zainstalowanie w urządzeniu CA: napisz swój urząd do urządzenia, dotknij pliku CA w wiadomości e-mail, a import w bezpieczne miejsce do przechowywania. Umożliwi to urządzeniu zaufanie do niepodpisanego połączenia https, bez konieczności wyświetlania kodu pokazanego poniżej.

Należy pamiętać, że chociaż poniższe rozwiązanie zadziała, jest niebezpieczne i niezalecane. Musisz usunąć te linie kodu przed wydaniem wersji produkcyjnej aplikacji. Niewykonanie tego spowoduje, że aplikacja będzie niepewna. To rozwiązanie nie jest zalecane, ponieważ użytkownicy mogą zapomnieć o usunięciu tego.

** Original odpowiedź **

Nie ma ustawienia Cordova plist do tego. Aby obejść ten problem w systemie iOS, dodaj kod widoczny poniżej do końca pliku AppDelegate.m.

@implementation NSURLRequest(DataController) 
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
{ 
    return YES; 
} 
@end 

Użyłem tego w kilku projektach w przeszłości i nie widziałem żadnych niepożądanych efektów ubocznych.

Plik AppDelegate.m można znaleźć w żółtym folderze zatytułowanym Classes w projekcie Xcode.

+0

Proponuję edytować odpowiedź, aby doprowadzić ostatnią część do góry! To najlepsze rozwiązanie: _ "wyślij pocztą e-mail do swojego urządzenia CA, dotknij pliku CA w wiadomości e-mail i zaimportuj go do bezpiecznego obszaru" _. Nie wysłałem go jednak e-mailem, pobrałem go z mojego urządzenia dev za pomocą http. – pauloya

+0

@PauloManuelSantos done – njtman

+0

Co powiesz na dodanie ustawienia zdefiniowanego przez użytkownika plist w oparciu o konfigurację build/target, aby zwrócić Tak/Nie? W ten sposób nie musisz pamiętać, aby usunąć kod, gdy będziesz gotowy do wydania ... – ganders