2012-02-07 4 views
2

Я очень новичок в этом поле ... Я недавно столкнулся с проблемой ... Я хочу проверить, идет ли сертификат SSL, поступающий с сервера, с правильного сервера (наш собственный сервер) или он поступает с любого вредоносного сервера ... Как я могу это достичь? Я использую методы NSURLConnection делегата connection:canAuthenticateAgainstProtectionSpace: и connection:didReceiveAuthenticationChallenge:.Проверить идентификатор сертификата SSL

ответ

3

Используйте приведенный ниже код в деле делегирования и замените строку YOUR HOST на ваш настоящий хост.

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
{ 
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) 
    { 
     if ([@"YOUR HOST" isEqualToString:challenge.protectionSpace.host]) 
     { 
      [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] 
       forAuthenticationChallenge:challenge];   
     } 
    } 
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; 
} 
0

Для iOS5 и выше, и потерпеть неудачу:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge 
{ 
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) 
    { 
     if ([@"xip.comcast.net" isEqualToString:challenge.protectionSpace.host] || 
      [@"xip-staging.cim.comcast.net" isEqualToString:challenge.protectionSpace.host]) 
     { 
      [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] 
       forAuthenticationChallenge:challenge]; 
     } 
     else 
     { 
      [challenge.sender cancelAuthenticationChallenge:challenge]; 
     } 
    } 
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; 
} 
Смежные вопросы