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