Не могу делать HTTPS-запросы на локальный сервер

У меня есть локальный сервер, работающий на Laravel Homestead:

https://laravel.com/docs/5.3/homestead

Homestead поставляется с предварительно упакованным SSL-сертификатом, и я делаю все свои запросы через HTTPS. Однако при попытке сделать запрос из моего приложения для iOS я получаю следующую ошибку:

ATS failed system trust
Connection 3: system TLS Trust evaluation failed(-9802)
Connection 3: TLS Trust encountered error 3:-9802
Connection 3: encountered error(3:-9802)
Task <892C4896-1D02-4465-AF06-D7534BE39828>.<1> HTTP load failed, 0/0 bytes (error code: -1200 [3:-9802])
Task <892C4896-1D02-4465-AF06-D7534BE39828>.<1> finished with error [-1200] 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?, _kCFStreamErrorDomainKey=3, NSErrorPeerCertificateChainKey=(
    "<cert(0x7fc76e82d800) s: mydomain.test i: Homestead homestead Root CA>"
)

Я добавил в свой Info.plist следующее:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsLocalNetworking</key>
        <true/>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

После прочтения некоторых статей и вопросов Github о закреплении SSL через Alamofire и Moya я также сделал следующее:

let evaluators: [String: ServerTrustEvaluating] = [
    "mydomain.test": DisabledEvaluator()
]

let manager = ServerTrustManager(evaluators: evaluators)
let session = Session(serverTrustManager: manager)

let provider = MoyaProvider<T>(session: session, plugins: [NetworkLoggerPlugin(verbose: true)])

Я также установил сертификат на свой Mac и установил для него значение «Всегда доверять», но все равно получаю сообщение об ошибке при запуске своего приложения для iOS.

Что я делаю не так? Что мне не хватает?


person user86516512    schedule 30.05.2020    source источник


Ответы (1)


Это мое решение, возможно, вы не заполните свой вопрос. Я не использую URL как myweb.local. Я использовал прямой IP и изменил порт для приложения в разработке. Когда вы используете порт, вам не нужно использовать SSL. Пример:

127.0.0.1:8000

person Trần Hữu Hiền    schedule 01.08.2020