In meiner Mac App habe ich eine WebView und möchte einen kleinen Button (wie in Safari) anzeigen, wenn der Benutzer eine Website mit "https" besucht. Beim Klicken auf diesen Button möchte ich die Zertifikatsinformationen anzeigen.
Hier ist, was ich bisher versucht habe...
1) Implementiert - (void)webView:(WebView *)sender resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource
Dieser Delegat wurde jedoch nicht aufgerufen, als ich eine Website mit "https" besuchte
2) Da das obige fehlschlug, schrieb ich einen anderen Code (in einer Beispiels-App)
// Anfrage erstellen.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.onlinesbi.com"]];
// URL-Verbindung erstellen und Anfrage senden
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
und implementiert
(void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust) {
// Vertrauen aus Schutzraum erstellen
SecTrustRef trustRef;
int trustCertificateCount = (int)SecTrustGetCertificateCount(challenge.protectionSpace.serverTrust);
NSMutableArray* trustCertificates = [[NSMutableArray alloc] initWithCapacity:trustCertificateCount];
for (int i = 0; i < trustCertificateCount; i++) {
SecCertificateRef trustCertificate = SecTrustGetCertificateAtIndex(challenge.protectionSpace.serverTrust, i);
[trustCertificates addObject:(__bridge id) trustCertificate];
}
}
}
Wenn ich die App jetzt ausführe, kommt dieser Delegat, jedoch ist die Anzahl der Zertifikate 0
3) Dieser bestimmte Link erwähnt die Verwendung der CFNetwork-API How to display certificate of HTTPS request in embedded WebView
Jetzt bin ich verwirrt, ob ich wirklich auf die CFNetwork-Ebene gehen und den Code implementieren muss ODER ob ich etwas falsch mache in 1) & 2), weshalb ich die Informationen nicht bekomme...