Walczę z uwierzytelnianiem certyfikatu klienta. Gdy serwer potrzebuje poświadczeń (certyfikat w tym przypadku), metoda ta jest wywoływana z NSURLConnection Delegat:iPhone: uwierzytelnianie certyfikatu klienta HTTPS
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Chcę załadować certyfikatu z pliku, wypełnij poświadczeń i uruchom tę metodę:
[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];
Ale nie wiem jak zainicjować (lub wypełnienie) do SecIdentityRef parametr. Oto mój kod, który tworzy poświadczenia:
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);
Czy ktoś wie, jak go rozwiązać? Dzięki.
mam w końcu znaleźć rozwiązanie, ale nowy problem jest tutaj:
mój klient nie wysyła certyfikat do serwera. Po serwer prosi o certyfikacie, aplikacja uruchamia tą metodą:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
i wypełnić poświadczeń (jak wspomniano powyżej), ale połączenie kończy się błędem: NSURLErrorDomain -1206. Zgodnie z dziennikami serwera certyfikat klienta nie jest wysyłany przez aplikację.
Czy ktoś ma jakiekolwiek doświadczenie w tym zachowaniu? Czy muszę w jakiś sposób zweryfikować certyfikat w aplikacji? Czy cokolwiek innego, żeby to zadziałało? Mogę podać mój obecny kod, jeśli to pomoże. Dzięki za wszelkie pomysły ...
Just a wskazówka, aby twoje pytania bardziej czytelny: pytania Dont stanowiska nowych odpowiedzi. Sprawia, że wątki są trudniejsze do odczytania. Pamiętaj, że twoje pytanie prawdopodobnie przyda się komuś innemu i ważne jest, aby zobaczył proces i ostateczną odpowiedź. Dzięki! – mtmurdock