2013-02-25 11 views
5

Ich arbeite mit dem OWASP-Beispiel für Certificate and Public Key Pinning. Das Beispiel verwendet random.org und random.org hat kürzlich ein neues Zertifikat erhalten. Das bedeutet connection:didReceiveAuthenticationChallenge: schlägt fehl. Das ist erwartet und gut :)Geben Sie sinnvollen Fehler von NSUrlConnection didReceiveAuthenticationChallenge

Der Fehler wird jedoch als "NSURLErrorDomain" angezeigt, mit einem Code von -1012. Das ist nicht sehr hilfreich, und ein Benutzer nicht in der Lage sein, etwas zu tun, sinnvoll mit ihm:

enter image description here

Es wäre viel besser, eine Nachricht mit dem Text zu liefern, ähnlich wie „Warnung: der öffentliche Schlüssel Identifizierung der Website hat sich verändert...".

Ein weiteres kleines Nit: in connection:didFailWithError: kann ich nicht sagen, ob die -1012 aufgrund der Pinning-Fehler oder ein anderer Netzwerkfehler ist. Daher möchte ich die Nachricht nur für den Zertifikatfehler und nicht für andere -1012-Fehler liefern.

Wie liefert man "reiche Fehlerinformation" an den Aufruf von [[challenge sender] cancelAuthenticationChallenge: challenge] (die aufgerufen wird, wenn connection:didReceiveAuthenticationChallenge: fehlschlägt). NSURLConnectionDelegate Protocol Reference und NSURLAuthenticationChallengeSender Protocol Reference erwähnen nicht, wie man das macht.

+0

Sehr gute Frage, vor einiger Zeit hatte ich genau das gleiche Problem, aber konnte nicht wirklich mehr Informationen als -1012 abrufen. Ich entschied mich für die generische Nachricht, die dem Benutzer mitteilt, dass das Zertifikat nicht übereinstimmt. – lawicko

+0

Hallo Lawicko. Ich dachte darüber nach zu versuchen, eine Ausnahme mit den reichhaltigen Fehlerinformationen zu werfen. Wie ich es verstehe, sind Objective-C-Ausnahmen nicht wie andere Sprachausnahmen. Haben Sie in diesem Fall eine Objective-C-Ausnahme versucht? – jww

+0

Nach meinem Verständnis besteht das Problem hier darin, wie man zusätzliche Informationen über den Fehler erhält und nicht, wie er danach verarbeitet wird. Sie erhalten also nur die verfluchtete -1012, ohne wirklich zu wissen, was die zugrunde liegende Ursache ist, basierend darauf können Sie nicht wirklich sagen, ob es aufgrund des Zertifikatsfehlers oder eines anderen Problems war, oder zumindest konnte ich diese Information nicht abrufen. Ich verstehe nicht genau, wie das Auslösen einer Ausnahme zu diesem Zeitpunkt dem ursprünglichen Problem helfen würde. – lawicko

Antwort

Verwandte Themen