#xamarin #https #cryptography #xamarin.forms #bouncycastle
#xamarin #https #криптография #xamarin.forms #bouncycastle
Вопрос:
Краткие сведения
Я пишу Xamarin.Формирует приложение, которое должно отправлять запросы к REST Api. Он должен использовать клиентский сертификат для установления двухстороннего ssl при взаимодействии с серверной частью.
Я бы хотел, чтобы все это было сделано в PCL, если это возможно.Каков наилучший способ сделать это?
Что у меня есть до сих пор
Xamarin.Формы не могут включать пакет System.Net.Security
. Из-за этого я не могу использовать обычный HttpClient from System.Net.Http.HttpClient
с клиентскими сертификатами. Поэтому мне нужен другой пакет криптографии и другой http-клиент, совместимый с этим пакетом.
Я нашел дистрибутив Bouncy Castle для C #, который, похоже, способен обрабатывать создание и управление клиентским сертификатом. Но я не нашел http-клиента, который действительно может использовать an Org.BouncyCastle.X509X509Certificate
для настройки 2-стороннего SSL.
Редактировать Итак, кажется, что нет способа использовать клиентские сертификаты в общем коде (пожалуйста, просветите меня, если я ошибаюсь!). Мне придется использовать DependencyService для создания реализации библиотеки для iOS и Android, используя разные HTTP-стеки.
Комментарии:
1. AFAIK, ваше редактирование правильное, в PCL нет возможности использовать сертификат клиента
2. К сожалению, мы получили тот же ответ от разработчиков на Xamarin. Итак, мы рассмотрим 3 реализации для конкретной платформы, чтобы посмотреть, сколько времени это займет.
Ответ №1:
Я знаю, как вы относитесь к PCL. Я написал эту библиотеку, которая является стандартной библиотекой .NET, которая также предназначена для PCL, чтобы ее можно было использовать с формами Xamarin:
https://bitbucket.org/MelbourneDeveloper/restclient-.net/overview
Есть несколько примеров того, как запустить это с помощью Xamarin Forms. Что касается использования сертификата, как вы упомянули, я не уверен, что вам нужно делать что-то особенное, но я могу ошибаться. Если вы можете рассказать мне немного больше о том, что необходимо, в частности, для использования этого сертификата, я мог бы рассмотреть возможность добавления функциональности в библиотеку.