Alamofire 4 — Swift 3 — учетные данные и самозаверяющий сертификат

#certificate #alamofire #credentials

#сертификат #alamofire #учетные данные

Вопрос:

Я использую Alamofire и пытаюсь получить канал JSON со своего сервера. Сервер имеет самозаверяющий сертификат и доступ через пользователя и пароль.

вот мой код

  let user = "user"
    let password = "password"

    let url1 = "https://10.0.1.2:4711/fhem/?cmd=jsonlist2amp;XHR=1"
    let credential = URLCredential(user: user, password: password, persistence: .forSession)

    let serverTrustPolicies :[String: ServerTrustPolicy] = [
    "10.0.1.8": .disableEvaluation
    ]


    let AlamoSession = SessionManager(serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
    AlamoSession.request(url1 )
        .authenticate(usingCredential: credential)
        .responseJSON { response in
            debugPrint(response.response)
            print("Result value (response.result.value)")
            //print (response.result.value?.valueForKey("status"))
    }
  

но это не работает!

Как я могу это сделать?

сделать запрос get на URL-адрес https с самозаверяющим сертификатом??

В info.plist в моем приложении я добавляю настройки безопасности транспорта приложения — Разрешить произвольные загрузки — ДА

Ответ №1:

Я проигнорировал ошибки SSL, используя этот код.

 import Alamofire

struct WebAPI {
    static let sessionManager: SessionManager = {
        switch MyEnvironment.server {
        case .development:
            return Alamofire.SessionManager(
                serverTrustPolicyManager: ServerTrustPolicyManagerForDevelop()
            )
        case .staging, .production:
            return Alamofire.SessionManager()
        }
    }()

    private class ServerTrustPolicyManagerForDevelop: ServerTrustPolicyManager {

        init() {
            super.init(policies: [:])
        }

        override func serverTrustPolicy(forHost host: String) -> ServerTrustPolicy? {
            return .disableEvaluation
        }
    }

}