Сертификаты клиента HTTPS с Monotouch

Я пытаюсь использовать клиентские сертификаты для подключения SSL, используя MonoTouch. Кажется, есть несколько примеров для этого, используя цель-c, и решение, которое я ищу, вероятно, будет похоже на тот, на который мы ответили, но в MonoTouch (C #).

Я использую класс NSUrlConnection в MonoTouch и переопределил класс NSUrlConnectionDelegate, чтобы ответить на вызов аутентификации.

Я смог загрузить сертификаты из файла, но мне не удалось найти полезное представление сертификатов для ответа на вызов проверки подлинности.

public override void ReceivedAuthenticationChallenge(NSUrlConnection connection, NSUrlAuthenticationChallenge challenge) { if (string.Equals(challenge.ProtectionSpace.AuthenticationMethod, "NSURLAuthenticationMethodClientCertificate", StringComparison.OrdinalIgnoreCase)) { string password = "<password_signed_certificate>"; byte[] data = File.ReadAllBytes("<path_of_file_in_ios_sandboxed_filesystem_pkcs>"); NSDictionary opt = NSDictionary.FromObjectsAndKeys(new object[]{password}, new object[]{"passphrase"}); NSDictionary[] items; SecStatusCode stat = SecImportExport.ImportPkcs12(data, opt, out items); // Uses MonoTouch.Security namespace MonoTouch.Security.SecTrust trust = (MonoTouch.Security.SecTrust)items[0]["trust"]; // Everything to this point works, and I can inspect the trust object that all the expected certificate properties (IssuerName etc.) are correct IntPtr secTrustRef = trust // ????? How do I bridge this gap // NSUrlConnection does not utilise MonoTouch security namespace NSUrlCredential cred = new NSUrlCredential(secTrustRef, true); challenge.Sender.UseCredentials(cred, challenge); } } 

Некоторые примечания:

  1. Я видел цели-c решения, но я не нашел эквивалентный набор шагов, необходимых в MonoTouch (C #).
  2. Я не могу использовать HttpWebRequest, поскольку реализация monotouch httpWebRequest.ClientCertificates (коллекция) выдает «не реализованное исключение».
  3. Я также попытался использовать Mono.Security.X509 и System.Security.Cryptography.X509Certificates namespaces, чтобы успешно открывать сертификаты, но снова я не могу использовать экземпляры класса для ответа на вызов аутентификации, поскольку мне нужно создать NSUrlCredential объект, который принимает только IntPtr.
  4. См. Также это .

2 Solutions collect form web for “Сертификаты клиента HTTPS с Monotouch”

У меня нет серверной среды, настроенной для этого, но попробуйте это:

Заменить:

 ... MonoTouch.Security.SecTrust trust = (MonoTouch.Security.SecTrust)items[0]["trust"]; IntPtr secTrustRef = trust ... 

с:

 ... NSObject obj = items[0]["trust"]; IntPtr secTrustRef = obj.Handle; ... create and use your credentials GC.KeepAlive (obj); // just in case ;-) ... 

Используйте HttpWebRequest. В вопросе примечания пункт 2 я сказал, что свойство HttpWebRequest.ClientCertificates вызывает исключение, которое не было реализовано, и поэтому я исключил эту опцию. Это делается, если вы попытаетесь установить это свойство с новой коллекцией, но если вы просто используете Access Access, вы можете добавить сертификат клиента в коллекцию.

В качестве дополнительной заметки использование HttpWebRequest делает приложение более переносимым для других устройств, что является частью причины, по которой мы используем MonoDevelop, так что это беспроигрышное.

  • Проблема с дизайном. Какую технологию я должен использовать для отправки текста другому пользователю в моем приложении?
  • Ошибка «Автомакет по-прежнему требуется» при добавлении subview в UITableView только на iOS 7
  • Как заставить ориентацию UIViewController на портретную ориентацию в iOS 6
  • как вы добавляете инфраструктуру ios в свой проект C # Xamarin iOS?
  • Как упаковать приложение Watch в приложении Cordova
  • UILabel с дополнением в Xamarin.iOS?
  • Как читать SMS в iOS и может ли он передать строку в приложение по ссылке в SMS
  • Ярлык в пользовательской ячейке равен NULL при заполнении UITableViewController
  • MonoDevelop / XCode Build успешно. Сбой сборки. Неверные данные
  • Разработка приложения iPad / iPhone в одном проекте или в двух отдельных (Monotouch)?
  • Как получить местоположение объекта относительно окна в iOS?
  • Interesting Posts

    Быстрые родные функции имеют числа в виде шестнадцатеричных строк

    обновить приложение, которое находится в ожидании релиза разработчика

    Что означает код исключения 0x00000000e7ffdefe?

    XCode iO6: UIWebView возвращает черный экран после возврата от выбора фотографии

    Требование множества случайных чисел

    iOS Quick Action Share с помощью UIActivityViewController

    SKPaymentQueue addPayment не всегда вызывает встроенный диалог подтверждения

    Когда само освобождается при отклонении диспетчера просмотров

    CoreBluetooth Central Manager не может обнаружить периферию в фоновом режиме

    закодировать звук с установленными интервалами

    iOS Bar Изображение элемента, отображающее неправильный цвет

    Google Analytics не работает в реальном времени

    Как сделать выход пользователя из твиттера ios

    MobileSafari не отправит обратно Cookies, установленные с CORS

    Можно ли запускать Network Link Conditioner с помощью инструментов с помощью автоматизированного тестирования пользовательского интерфейса?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.