Open VisualDeceit opened 1 year ago
Если убрать проверку из кода совсем и всегда разрешать подключение, то проблема останется?
Если убрать проверку из кода совсем и всегда разрешать подключение, то проблема останется?
Да, поведение аналогичное
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _WKRecoveryAttempterErrorKey=<WKReloadFrameErrorRecoveryAttempter: 0x2827692a0>, networkTaskDescription=LocalDataTask <3D89ECBF-AEDE-4577-95C1-5F46AA07D744>.<2>, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802,
NSErrorPeerCertificateChainKey=(
"<cert(0x135fe7270) s: 3dsec.sberbank.ru i: Russian Trusted Sub CA>",
"<cert(0x13b1e6fd0) s: Russian Trusted Sub CA i: Russian Trusted Root CA>",
"<cert(0x13b16dd50) s: Russian Trusted Root CA i: Russian Trusted Root CA>"
), NSErrorFailingURLStringKey=https://3dsec.sberbank.ru/payment/merchants/sbersafe_sberid/payment_ru.html?mdOrder=81de6ec1-f8d6-75fe-b080-b26b28084cc4,
NSUnderlyingError=0x2828fc690 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9802}}, NSErrorClientCertificateStateKey=0, NSErrorFailingURLKey=https://3dsec.sberbank.ru/payment/merchants/sbersafe_sberid/payment_ru.html?mdOrder=81de6ec1-f8d6-75fe-b080-b26b28084cc4, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <3D89ECBF-AEDE-4577-95C1-5F46AA07D744>.<2>, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x2816f5360>, NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made.}
Выглядит так, что дело не в коде, а в конфиге каком-то.
Можно попробовать разрешить все загрузки в Info.plist. Вы вроде бы это сделали, но уточню, что оно должно быть без деления на домены, в семпле вот так выглядит:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
Если это сработает, то похоже на то, что маска sberbank.ru в таком виде не работает. В целом я бы не ограничивался по банкам, потому что это же касается и ВТБ и другие заденет когда-нибудь.
Выглядит так, что дело не в коде, а в конфиге каком-то.
Можно попробовать разрешить все загрузки в Info.plist. Вы вроде бы это сделали, но уточню, что оно должно быть без деления на домены, в семпле вот так выглядит:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> </dict>
К сожалению, ситуация не изменилась. Могут ли pods влиять на info.plist?
@VisualDeceit поды не влияют на него
Здравствуйте.
Столкнулся с такой проблемой после реализации данного решения в проекте - на физическом устройстве не отрывается ссылка на оплату, которая приходит с платежного шлюза в виде
https://3dsec.sberbank.ru/payment/merchants/sbersafe_sberid/payment_ru.html?mdOrder=....
Причем, если подставить https://3dsecmt.sberbank.ru/payment/se/keys.do, то все работает.
Сертификаты "прожёвывает". Пробовал и готовые и сам генерировал. А самое интересное в том, что при подстановке ссылки от шлюза в ваше приложение все работает! С примером от Сбера такая же ситуация. Настройки
NSAppTransportSecurity
какие только не пробовал. ИNSAllowsArbitraryLoads
и кастомный на домен Сбера:Разницы нет. Грешу на то, что в проекте какие-то настройки перебивают NSAllowsArbitraryLoads. Больше мыслей нет.
Ошибку выдает следующую.
Может быть что-то посоветуете, куда копать?