iPhone: проверка подлинности клиента HTTPS

борюсь с проверкой подлинности сертификата клиента. Когда серверу нужны учетные данные (в данном случае сертификат), этот метод вызывается изNSURLConnection делегат:

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

Я хочу загрузить сертификат из файла, заполнить учетные данные и запустить этот метод:

[[challenge sender] useCredential:[self credential] forAuthenticationChallenge:challenge];

Но я нене знаю, как инициализировать (или заполнить)SecIdentityRef параметр. Вот мой код, который создает учетные данные:

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);

Кто-нибудь знает, как это решить? Thanks.I»

Мы наконец нашли решение, но новая проблема здесь:

мой клиент неотправить сертификат на сервер. После того как сервер запросит сертификат, приложение запускает этот метод:

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

и я заполняю учетные данные (как я упоминал выше), но соединение заканчивается с ошибкой:NSURLErrorDomain -1206, Согласно журналам сервера сертификат клиента не отправляется приложением.

У кого-нибудь есть опыт с этим поведением? Нужно ли как-то проверять сертификат в приложении? Или что-нибудь еще, чтобы заставить это работать? Я могу предоставить свой текущий код, если это поможет. Спасибо за любые идеи ...

Ответы на вопрос(3)

Ваш ответ на вопрос