Sto combattendo con un'autenticazione del certificato client. Quando un server ha bisogno di una credenziale (un certificato in questo caso), questo metodo viene richiamato dal NSURLConnection delegato:iPhone: autenticazione CERT client HTTPS
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
voglio caricare un certificato da un file, riempire una credenziale ed eseguire questo metodo:
[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];
Ma io non so come inizializzare (o compili) un parametro SecIdentityRef. Ecco il mio codice che crea le credenziali:
NSString *certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"cer"];
NSData *certData = [[NSData alloc] initWithContentsOfFile:certPath];
SecIdentityRef myIdentity; // ???
SecCertificateRef myCert = SecCertificateCreateWithData(NULL, (CFDataRef)certData);
[certData release];
SecCertificateRef certArray[1] = { myCert };
CFArrayRef myCerts = CFArrayCreate(NULL, (void *)certArray, 1, NULL);
CFRelease(myCert);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity
certificates:(NSArray *)myCerts
persistence:NSURLCredentialPersistencePermanent];
CFRelease(myCerts);
qualcuno sa come risolverlo? Grazie.
ho finalmente trovato la soluzione, ma un nuovo problema è qui:
il mio cliente non invia il certificato al server. Dopo che il server richiede il certificato, l'applicazione viene eseguita questo metodo:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
e riempire le credenziali (come ho detto sopra), ma la connessione si conclude con un errore: NSURLErrorDomain -1206. In base ai log del server, il certificato client non viene inviato dall'applicazione.
Qualcuno ha esperienza con questo comportamento? Devo in qualche modo verificare il certificato nell'applicazione? O qualcos'altro per farlo funzionare? Posso fornire il mio codice attuale se aiuta. Grazie per tutte le idee ...
Solo un consiglio per rendere le vostre domande più leggibile: domande Dont posto di nuove risposte. Tende a rendere i thread più difficili da leggere. Ricorda che la tua domanda sarà probabilmente utile a qualcun altro ed è importante che siano in grado di vedere il tuo processo e la risposta finale. Grazie! – mtmurdock