веб-сервис iPhone призывает к Сервису WCF с Аутентификацией Сертификата

Мы - магазин .NET, который стандартизировал на WCF Services. Мы находимся в процессе разработки приложения для iPhone, которое должно выполнить вызовы защищенных веб-сервис для получения данных для приложения. Для обеспечения безопасного communiations, мы включили SSL на наших веб-серверах. Но это не гарантирует, что сервис может только быть использован разрешенными приложениями. Мы настроили наши сервисы поддерживать x509 аутентификацию сертификата. Даже возможно назвать безопасные услуги WCF с certifcate аутентификацией из Приложения для iPhone?

Я провел много часов, ища Интернет примеры, но напрасно. Я был в состоянии успешно назвать небезопасный сервис WCF без проблем. Я также провел большое исследование в области безопасности WS и коммуникационных стандартов WS-Trust. Я полагаю, что понимаю, как это должно работать. Я просто испытываю затруднения, соединяющие шаги/объекты в платформах iPhone, я должен сделать эту работу.

Любые мысли и идеи о предмете значительно ценились бы.

Кроме того, любые мысли о любом следующем:

  1. Как лучше всего развернуть файл P12 certifcate с приложением для iPhone
  2. Как лучше всего защитить пароль для файла P12 в рамках приложения
  3. Развертывает файл P12 с приложением лучшая практика
  4. Есть ли средства в платформах iPhone для поддержки этого вида безопасной коммуникации? В противном случае, какова была бы альтернативная рекомендация.
13
задан Maike9 11 February 2010 в 13:42
поделиться

4 ответа

Обычно, если вы хотите установить сертификаты на iPhone, я нашел два варианта (оба из здесь ) :

  • Отправьте сертификат получателю по электронной почте. Если это действующий сертификат и заголовки в электронном письме в порядке, то получатель электронного письма сможет установить сертификат. Проблема здесь, конечно, в атаке «человек посередине».

  • Используйте служебную программу настройки iPhone.

Это должно помочь вам в этом (установка сертификата локально). Я должен отметить, что, как правило, вы не хотите устанавливать один сертификат для всего приложения, а иметь отдельные сертификаты для своих пользователей.Как правило, аутентификация приложения - это очень плохая вещь , тогда как вы должны аутентифицировать пользователя .

Однако, если вы уже аутентифицируете пользователя, это не должно быть проблемой, поскольку использование базовой аутентификации через HTTPS будет работать так же хорошо (и его легче кодировать).

1
ответ дан 2 December 2019 в 00:31
поделиться

Вы также можете использовать ssl + аутентификацию пользователь/пасс на уровне сообщений.

3
ответ дан 2 December 2019 в 00:31
поделиться

Я тоже согласен с решением Ярона Навеха, наверное, лучше всего использовать SSL. Я считаю, что шифрование SSL / TLS лучше с точки зрения производительности, чем шифрование на основе сообщений / XML в WCF.

Я думаю, что сертификат, вероятно, должен быть от доверенного центра сертификации ( центр сертификации ), чтобы это работало. По памяти, у меня были проблемы с iPhone SDK с самозаверяющими сертификатами, но это могло измениться за последний год ...

0
ответ дан 2 December 2019 в 00:31
поделиться

Для начала, я бы сказал, что если вы действительно серьезно относитесь к безопасности, пожалуйста, уделите этому должное время и ресурсы и рассматривайте это как гражданина первого класса в вашем списке функций. Не надо просто "включать SSL" и делать вид, что все безопасно. Я не говорю, что вы делаете это или не делаете, но я просто чувствую, что должен сказать это, прежде чем продолжить.

Итак, вы, вероятно, уже знаете, что WS-* построен на основе http-запросов, и в любое время, когда вы делаете много http-запросов, вы, вероятно, найдете ASIHTTPRequest очень полезным на iPhone. Однако это не даст вам 100% результата.

С точки зрения iPhone у вас есть:

  1. Система загрузки URL, которая является API высокого уровня для работы с сетевыми ресурсами любого типа
  2. API CFNetwork C, который является API более низкого уровня и позволяет вам гораздо больше контролировать шифрование потоков и сетевого трафика любым способом, который вы считаете нужным
  3. Служба Сертификаты, ключи, и Trust Services, которые выполняют тяжелую работу, а точнее политики доверия X509

На Mac вы можете использовать Secure Transport, но, насколько я знаю, они не перенесли его на устройство, так что я бы не стал отвлекаться на чтение этой информации, если только вы не планируете перенести это на настольный компьютер или просто в настроении изучить все: )

Если вы делаете любую безопасность с WCF, первая вещь, которую вы, вероятно, поняли, является то, что есть много вариантов, доступных вам, но все это сводится к этому короткому списку:

  1. Безопасность транспортного уровня (https) с открытым текстом сообщений (xml/json/. ...)
  2. Безопасность уровня сообщений (зашифрованное тело сообщения) через открытый транспорт (http)
  3. Защищенные сообщения через защищенный транспорт

В последний раз, когда я делал WCF (около года назад), общая рекомендация от Microsoft, казалось, была безопасностью уровня сообщений через открытый транспорт из-за проблем брандмауэра / доступности, представленных при попытке защитить транспорт. Однако, этот подход предполагал, что все вовлеченные стороны были .NET / WCF способны. Я считаю, что было бы проще потреблять на устройстве, если бы это была безопасность транспортного уровня HTTPS, с понятными телами сообщений XML или JSON. Таким образом, вы сможете воспользоваться всеми преимуществами CFNetwork и NSHTTPRequest, которые сделала Apple.

Как только вы получите что-то работающее, вам нужно обратиться к Enterprise Deployment Guide, и особенно к документации по Over-the-Air Enrollment, чтобы вы могли установить сертификаты на устройства. Помните, все возможно, и не бойтесь использовать один из тех тикетов поддержки Apple, которые поставляются вместе с программой :)

EDIT:

Я совсем забыл упомянуть примеры GenericKeychain и CryptoExcercise

EDIT 2:

После того, как меня без видимых причин понизили в голосовании, я перечитал свой ответ и понял, что слишком много бредил, не ответив на ваш вопрос о том, как открыть файл p12 на устройстве. Вы должны быть в состоянии просто [[UIApplication sharedApplication] openURL:urlToP12FileEitherLocalOrRemote]] и заставить его выкинуть в ОС для процедуры установки.

10
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: