2013-03-26 11 views
8

Próbuję sprawdzić certyfikat serwera w aplikacji na iOS.willSendRequestForAuthenticationChallenge nie nazywane

Sposób delegat Mam problem z to:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 

Ta metoda nazywa się podczas korzystania z serwera, takich jak „https://twitter.com”.

Ale kiedy wskażę to na mój serwer produkcyjny (Government CA), ta metoda nie zostanie wywołana.

Ten certyfikat może być uważany za samopodpisany certyfikat, ponieważ jeśli nie masz zainstalowanych certyfikatów gov, w przeglądarce pojawia się komunikat "To połączenie jest niezaufane".

Czy istnieje sposób na wymuszenie wywołania metody willSendRequestForAuthenticationChallenge i sprawdzenie certyfikatu z podpisem własnym?

Dzięki!

+0

Czy otrzymałeś jakieś obejście tego problemu? Stoję w obliczu tego samego i ten delegat nie zostaje wezwany nawet po 10 minutach. – Maverick

Odpowiedz

6

Pytanie zostało zadane przed chwilą, ale pomyślałem, że udzielę odpowiedzi ludziom, którzy przyjdą.

Jak rozumiem wyzwanie uwierzytelnienia jest wywoływane tylko raz na hosta co 10 minut. Rezultatem wyzwania jest zbuforowanie wydajności. Pamięć podręczna wygasa za 10 minut. (http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake)

Dobry wgląd podano tu jblack który ma odniesienie do forów Apple: How to cancel a persistent connection using NSURLConnection?

Gdy miałem podobne pytanie i problem, rzecz, że zadziałał mnie to, że użyłem ten sam host dla wielu operacji w aplikacji, więc wyzwanie zostało zaakceptowane gdzie indziej, ale nie wygasło zanim mój NSURLConnection został zwolniony, dlatego nigdy nie dostałem wyzwania (nie było potrzeby).

Spróbuj odizolować hosta od tego jednego żądania, a następnie powinieneś uzyskać wywołanie zwrotne.

Mam nadzieję, że to pomaga.

Powiązane problemy