Ответ 1
Для начала, я бы сказал, если вы действительно серьезно относитесь к безопасности, пожалуйста, посвятите ему надлежащее время и ресурсы и относитесь к нему как к первоклассному гражданину в списке функций. Не просто "включите SSL" и притворитесь, что все в безопасности. Я не предлагаю вам делать это или не делать этого, но я просто чувствую, что должен сказать это, прежде чем продолжить.
Тем не менее, вы, вероятно, уже знаете, что WS- * все построено поверх HTTP-запросов, и в любое время, когда вы выполняете множество HTTP-запросов, вы, вероятно, найдете ASIHTTPRequest очень полезно на iPhone. Однако, это не даст вам 100% пути.
С точки зрения iPhone у вас есть:
- система загрузки URL, которая является API высокого уровня для работы с сетевыми ресурсами любого типа.
- CFNetwork C API, который является более низким уровнем и позволяет вам намного больше контролировать шифрование потоков и сетевого трафика любым способом вы считаете нужным
- Сертификат, ключ и трастовые службы, которые делают тяжелый подъем, а точнее правила доверия X509
На компьютерах Mac вы можете использовать Secure Transport, но насколько я знаю, они не портировали это устройство, поэтому я не стал бы слишком отвлекаться на это, если вы не планируете доводить это до рабочего стола или просто в настроении узнать все:)
Если вы выполняете какую-либо защиту с помощью WCF, первое, что вы, вероятно, поняли, это то, что есть множество доступных вам вариантов, но это все сводится к этому краткому списку:
- Безопасность транспортного уровня (https) с четкими текстовыми сообщениями (xml/json/...)
- Защита уровня сообщений (зашифрованное тело сообщения) над открытым транспортом (http)
- Защищенные сообщения через защищенный транспорт
В прошлый раз, когда я делал WCF (около года назад), общая рекомендация Microsoft, казалось, была защитой уровня сообщений над открытым транспортом из-за проблем с брандмауэром/доступом, возникающих при попытке защитить транспорт. Однако этот подход предполагал, что все вовлеченные стороны были .NET/WCF. Я считаю, что было бы проще потреблять на устройстве, если бы это была безопасность транспортного уровня HTTPS, с четкими XML-сообщениями или сообщениями JSON. Таким образом, вы можете использовать все вещи, запеченные в CFNetwork и NSHTTPRequest, которые Apple сделала.
Как только вы получите что-то полезное, вы захотите обратиться к Руководство по развертыванию Enterprise и, в частности, документацию по Over- Air Enrollment, чтобы вы могли установить сертификаты на устройствах. Помните, что все возможно, и не бойтесь использовать один из тех билетов Apple, которые поставляются с программой:)
EDIT:
Я полностью забыл упомянуть GenericKeychain и CryptoExcercise Примеры
ИЗМЕНИТЬ 2:
После того, как я стал без видимой причины, я перечитал свой ответ и понял, что я слишком много перепутал, не отвечая на ваш вопрос о том, как открыть файл p12 на устройстве. Вы должны иметь возможность просто [[UIApplication sharedApplication] openURL:urlToP12FileEitherLocalOrRemote]]
и запустить его в ОС для процедуры установки.