Проверьте личность SSL-сертификата - PullRequest
2 голосов
/ 07 февраля 2012

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

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

Используйте приведенный ниже код в делегате соединения и замените строку 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 голосов
/ 07 апреля 2014

Для 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];
}
...