Как получить доступ к информации о сертификате сервера в Objective C? - PullRequest
1 голос
/ 06 февраля 2012

Для моего приложения у меня есть сертификат доверенного сервера, и я хочу получить доступ к информации о сертификате в своем коде.Моя цель состоит в том, чтобы проверить, совпадают ли имя хоста url и имя хоста сертификата.Если они совпадают, я установлю соединение, в противном случае я выдам ошибку.

1 Ответ

1 голос
/ 06 февраля 2012
  1. вы используете NSURLConnectionDelegate методы -connection:canAuthenticateAgainstProtectionSpace: и -connection:didReceiveAuthenticationChallenge: для получения запроса аутентификации в доверительном сервере пространство защиты. Вот где вы получаете возможность проверить сертификат.

  2. Не просто проверьте, что имя хоста совпадает! Любой может выдать себе сертификат для любого сервера, и даже были выданы сертификаты для *.*.com и аналогичных подстановочных знаков. Вам необходимо решить, доверяете ли вы 1014 * удостоверению, выданному вместе с сертификатом: именно поэтому это называется проверкой подлинности на сервере.

как я могу доверять удостоверению личности, выданному с сертификатом

Вам необходимо оценить доверие к серверу. То, что ваша политика предназначена для доверия сертификатам, не то, что я хотел бы предсказать, но то, как вы используете API для оценки доверия, описано в руководстве Apple Certificate, Key and Trust Services .

и как я могу получить доступ к некоторой информации в сертификате

Доступные API задокументированы в справочнике Сертификат, Ключ и Службы доверия . Обратите внимание, что на iOS не так много вариантов извлечения данных из сертификата - конечно, не так много, как на Mac.

...