Запрос ASIHTTP: как обращаться с сертификатом SSL

Я использую ASIHTTP в своем проекте, и мне нужно поддерживать SSL-соединения с сертификатом клиента или без него. На мой взгляд, во время рукопожатия SSL возможны четыре случая:

  • случай A: сервер представляет доверенный сертификат, но не просит клиента предоставить его (например, https://www.gmail.com/, ...)

  • случай B: сервер представляет самозаверяющий сертификат, но не просит клиента предоставить его (например, https://www.cacert.org/images/cacert4.png)

  • case C: сервер представляет доверенный сертификат и просит клиента представить его

  • вариант D: сервер представляет самозаверяющий сертификат и просит клиента предоставить его

ASIHTTP поддерживает случай A без проблем.

Случай C также поддерживается, но я должен дать SecIdentityRef перед началом запроса:

[request setClientCertificateIdentity:identity];

Другие случаи не поддерживаются (без полного отключения проверки сертификата на уровне CFStream, что я не хочу делать).

Для меня нормальное поведение, которое я хочу от ASIHTTP, - это попросить делегата для случаев B, C и D. Для случаев B и D делегата следует попросить доверять сертификату сервера или нет (как это делается в веб-браузере)., Для случаев C и D делегата также следует попросить предоставить сертификат.

ASIHTTP основан на соединении CFStream. Есть ли способ настроить CFStream так, чтобы он возвращал разные ошибки в случаях B, C и D? И затем, обнаруживает эти ошибки и уведомляет делегата с правильным обратным вызовом?

Спасибо за вашу помощь.

0 ответов

Другие вопросы по тегам