Aktualnie otwieram połączenie https z serwerem WWW przy użyciu NSURLConnection. Wszystko działa tak, jak powinno i mogę odzyskać zawartość strony, której szukam. Certyfikat jest wydawany przez VeriSign i zakładam, że NSURLConnection w pewnym stopniu wymaga weryfikacji autentyczności certyfikatu? Jeśli połączyłem się z tą samą witryną przez mobilne safari, wyodrębniłbym ją z certyfikatu i wyświetliłaby organizację (strony) na pasku nawigacyjnym. Czy możliwe jest wyodrębnienie tych samych szczegółów w Cocoa Touch, ponieważ ja również chciałbym je przedstawić użytkownikowi? Czy weryfikacja nazwy hosta serwera względem tego certyfikatu byłaby na tyle rozsądna, aby zakładać, że strona internetowa jest prawidłowa?Jak zweryfikować certyfikat witryny w Cocoa Touch?
Odpowiedz
da błąd (NSURLErrorDomain
), jeśli spróbujesz połączyć się z serwerem za pomocą nieważnego certyfikatu (np. Więc nie musisz sam przeprowadzać żadnej weryfikacji, ponieważ wszystko jest dla ciebie obsługiwane.
Jeśli naprawdę chcesz/chcesz wyświetlić podsumowanie certyfikatu SSL w interfejsie użytkownika, musisz usunąć warstwę z NSURLConnection
i zamiast tego użyć interfejsu API niskiego poziomu CFNetwork
. Raz masz CFReadStreamRef
, który jest w stanie kCFStreamEventEndEncountered
, powinieneś być w stanie wykonać następujące czynności (zakładając, że uchwyt strumień nazywa readStream
):
NSArray* certificates = [(NSArray*)CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates) autorelease];
if ([certificates count] > 0) {
SecCertificateRef certificate = (SecCertificateRef)[certificates objectAtIndex:0];
NSString* description = [(NSString*)SecCertificateCopySubjectSummary(certificate) autorelease];
NSData* data = [(NSData*)SecCertificateCopyData(certificate) autorelease];
}
Musisz dekodowania informacji przechowywanych w data
jeśli chcesz aby uzyskać dostęp do różnych właściwości certyfikatu, ale podsumowanie w numerze description
może wystarczyć dla twoich celów.
- 1. Obróć UIView w Cocoa Touch
- 2. Cocoa-Touch - Delegacja zamieszania
- 3. Jak zweryfikować certyfikat X509 w C
- 4. Cocoa Touch - Jak parse lokalny plik Json
- 5. Obowiązki Delegatów i Kontrolerów w Cocoa Touch?
- 6. Zrozumienie wzorca projektowego MVC w Cocoa Touch
- 7. pyton foursquare - certyfikat SSL3 zweryfikować udało
- 8. Jak sprawdzić, czy urządzenie Cocoa Touch może nawiązywać połączenia?
- 9. Co to jest odpowiednik NSArrayController w Cocoa Touch?
- 10. Jakie są typowe wzorce projektowe w Cocoa Touch?
- 11. Pod obsługi w Cocoa Touch ramach - błąd dostaje Device
- 12. Czytanie pliku .ppt (MS PowerPoint) w Cocoa Touch
- 13. Cocoa Touch Framework nie debuguje na symulatorze w projekcie osadzania
- 14. Pobierz ciąg wersji projektu Cocoa Touch Framework w Swift
- 15. Czy istnieje sposób dynamicznego określania ivars klasy w czasie wykonywania w Cocoa/Cocoa Touch?
- 16. Czy jest więcej filmów na temat Cocoa i Cocoa Touch, które warto obejrzeć?
- 17. Jak przypisać certyfikat SSL do witryny IIS7 z wiersza polecenia
- 18. Jak uruchomić aplikację Touch Touch w Eclipse
- 19. Jak mogę wdrożyć wzorzec lokalizatora usług w programie Cocoa Touch w wielu projektach?
- 20. Na Cocoa Touch/UIKit, jak wykrywać zmiany w interfejsie użytkownika z wątku tła?
- 21. Jak zweryfikować połączenie sqlplus?
- 22. Jak zweryfikować pomyślną płatność usługi PayPal
- 23. Jak zmienić certyfikat x509.Clicencja w certyfikat Tls.Certyfikat w Go?
- 24. Jak wymusić Python LDAP, aby potwierdzić/zweryfikować certyfikat SSL podczas korzystania .start_tls_s()
- 25. Czy możesz programowo uzyskać dostęp do standardowych zlokalizowanych ciągów w Cocoa Touch?
- 26. iPhone Certyfikat TrustStore CA
- 27. Jak zweryfikować snapin przed dodaniem?
- 28. jak zweryfikować metodę obiektu niemostugowego?
- 29. Jak zweryfikować adres IP w C#
- 30. Jak zweryfikować mieszkańców tynku szablon w rspec
Dzięki za pomoc Nathan, upuszczenie warstwy podobnej do tej, którą zasugerowałeś, rozwiązało problem! Chociaż nie jest to prawdziwy problem, czy Twój NSDictionary * nie powinien być zamiast NSArray *? – dbotha
Czy byłbyś w stanie wysłać próbkę kodu Deon? – Pripyat
@Deon Dobrze, jesteś! Zaktualizowałem przykładowy kod. –