ASIHTTPRequest https запрос и SSL - PullRequest
       1

ASIHTTPRequest https запрос и SSL

2 голосов
/ 23 октября 2011

Я пытаюсь отправить очень простой запрос ASIHTTPRequest с https.Хотя я установил флаг validatesSecureCertificate на «НЕТ», я все же получаю странный ответ на мой запрос:

A connection failure occurred: SSL problem (Possible causes may include a bad/expired/self-signed certificate, clock set to wrong date)

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

NSURL *url = [NSURL URLWithString:@"https://secured.cet.ac.il/KotarServices/getMyBooks.aspx?username=xxxxxxxx&password=xxxxx&packageid=x"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDidFailSelector:@selector(getMyBooksFailedWithError:)];
    [request setDidFinishSelector:@selector(getMyBooksFinishedWithResult:)];
    [request setDelegate:self];
    [request setValidatesSecureCertificate:NO];
    [request startAsynchronous];

Углубляясь в код, я вижу, что запрос не выполняется с кодом ошибки "-9807", который относится только к операционной системе и не имеет ничего общего с сервером, с которым я взаимодействую(SecureTransport.h отображает это как «неверную цепочку сертификатов»).Есть идеи, как преодолеть эту проблему?Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 24 октября 2011

Я помню, у меня была похожая проблема с сертификатом GoDaddy, и мне пришлось внести следующее изменение в ASIHTTPRequest.m, под комментарием «Обрабатывать настройки сертификата SSL», внутри if (! [Self validatesSecureCertificate]), около строки 1160 :

[sslProperties setObject: (NSString *) kCFBooleanTrue forKey: (NSString *) kCFStreamSSLAllowsAnyRoot];

1 голос
/ 29 февраля 2012

Я столкнулся с этим с сертификатом GoDaddy, который я только что купил сегодня. Одно исправление к решению trydis: я думаю, что вы хотите это за пределами if (! [Self validatesSecureCertificate]), поскольку вы действительно хотите проверить сертификат. Как говорится в комментарии, содержимое предложения if "говорит CFNetwork не проверять SSL-сертификаты". Т.Б., я понятия не имею, почему сертификат GoDaddy интерпретируется клиентом как корневой сертификат, что и требует этого изменения.

...