iOS блокирует использование клиентского сертификата, используемого приложением cordova - PullRequest
0 голосов
/ 15 января 2020

У нас есть приложение Cordova, которое подключается через обратный прокси к веб-службам на сервере Microsoft Dynamics Business Central. Теперь у нас есть запрос клиента, что они хотят использовать клиентские сертификаты.

Мы реализовали плагин на основе cordova-plugin-client-Certificate для сохранения сертификата в хранилище ключей iOS для приложения (поскольку приложение не может просто использовать " обычно «установленный сертификат», и мы можем снова получить сертификат из хранилища ключей, чтобы использовать его для аутентификации на обратном прокси-сервере. Обратный прокси-сервер проверяет сертификат перед тем, как отправлять запрос на Business Central Server.

К сожалению, при попытке отправив запрос с сертификатом на сервер, iOS на устройстве не позволяет использовать наш сертификат, но показывает следующую ошибку.

Error Domain=NSOSStatusErrorDomain Code=-67843 "“infoma-adVM-CA” certificate is not trusted"
UserInfo={NSLocalizedDescription=“infoma-adVM-CA” certificate is not trusted, NSUnderlyingError=0x28155a6a0 
{Error Domain=NSOSStatusErrorDomain Code=-67843 "Certificate 1 “infoma-adVM-CA” has errors: Root is not trusted;"
UserInfo={NSLocalizedDescription=Certificate 1 “infoma-adVM-CA” has errors: Root is not trusted;}}}

Используя safari, мы можем подключиться с помощью сертификата клиента к Обратный прокси без проблем, если мы устанавливаем сертификат и доверяем ему в настройках. Если мы используем наш плагин для установки сертификата, мы, очевидно, не видим сертификат в настройках, поэтому мы не можем доверять ему. Это приводит нас на два вопроса:

  1. Возможно ли это в любом способ доверять клиентскому сертификату, установленному в приложении, указав c хранилище ключей или заставить iOS использовать клиентский сертификат, даже если он не является доверенным?

  2. В качестве альтернативы Можно ли создать клиентский сертификат, основанный на сертификате уже доверенного ЦС (т.е. не нашего собственного ЦС, а, например, сертификата Let's шифруется)?

...