Принятие самоподписанных сертификатов Swift 5 - PullRequest
0 голосов
/ 06 мая 2020


У меня проблема с самоподписанными сертификатами. Наша компания предоставляет нашим серверам серверное приложение с API для многих клиентов. Я начал тестировать свое приложение в домашнем офисе и установил всю систему на виртуальную машину. У меня не было проблем, но я подключался без ssl с самоподписанным сертификатом. В этот момент я попытался подключиться к серверу с включенным ssl. Я получаю эту ошибку:

Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “192.168.140.135” which could put your confidential information at risk." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x600001c1a400>, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=(
"<cert(0x7f806c847600) s: WIN-D928REUHANL i: WIN-D928REUHANL>

Я читал о закреплении сертификата, но у меня нет возможности закрепить этот сертификат, потому что в некоторых местах у нас есть наши самоподписанные сертификаты, созданные в IIS (каждый клиент имеет другой сертификат), а иногда наши клиенты предоставляют собственные сертификаты, которые также являются самоподписанными. Может кто-нибудь помочь мне с этим справиться? Я вижу, что он спрашивает меня, хочу ли я подключиться, поэтому я более чем уверен, что это возможно.

NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?

Я видел некоторые решения с модификациями p.list, но не уверен, что это хорошее решение. Это приложение необходимо загрузить в магазин приложений, оно должно быть безопасным, но я не передаю конфиденциальные данные. Приложение будет подключаться только к нашему системному API, часто в закрытой сети. Мне нужно быть уверенным, что это приложение будет соответствовать требованиям Apple. Я бы хотел принять сертификат в своем приложении, как в веб-браузере, если бы я думал о контроллере предупреждений или о чем-то еще. Я хотел бы принять доверие к сертификату.

Я работаю с codable, могу реализовать Alamofire, это поможет мне обрабатывать сертификаты.
Приложение работает в iOS13, Xcode 11.4.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...