Закрепление открытого ключа Alamofire не проверяет другой URL - PullRequest
1 голос
/ 11 апреля 2019

У меня 3 baseURL, эти 3 имеют разные сертификаты ssl, я скачал один сертификат и жестко запрограммирован в проекте Xcode, даже если я изменил запрос url, приложение не блокирует запрос.

Я использую этот класс

class APIManager {

    static let sharedInstance = APIManager()
    private var manager : SessionManager?
    func sessionManager() -> SessionManager {

        if let manage = self.manager {
            return manage
        }
        else {
            let serverTrustpolicies: [ String: ServerTrustPolicy] = ["url" : .pinPublicKeys(publicKeys: ServerTrustPolicy.publicKeys(), validateCertificateChain: true, validateHost: true)
            ]

            self.manager = SessionManager(
                serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustpolicies)
            )
            let configuration = URLSessionConfiguration.default
            configuration.timeoutIntervalForRequest = 30
            self.manager = SessionManager(configuration: configuration)
            return self.manager!
        }

    }
}

APIManager.sharedInstance.sessionManager().upload(multipartFormData: { (multipartFormData)
}

Может кто-нибудь объяснить, чтобы реализовать?

1 Ответ

0 голосов
/ 11 апреля 2019

Вы должны явно установить ServerTrustPolicy значения для каждого хоста, который вы хотите проверить.Поэтому, когда вы создаете свой словарь политик, вам нужно пропустить каждый хост.

let serverTrustPolicies: [String: ServerTrustPolicy] = ["url" : .pinPublicKeys(publicKeys: ServerTrustPolicy.publicKeys(), validateCertificateChain: true, validateHost: true)]

Для этого должны быть добавлены другие ваши базовые URL с соответствующим набором политик.

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