Проблема с неверным сертификатом в URL службы. Я использую Alamofire для запроса API.Вот некоторый код со свойством Plist
private static var Manager : Alamofire.SessionManager = {
let cert = "cert"
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"https://xxx.xxx.xx.xxx/xxx/": .disableEvaluation
]
// Set up certificates
let pathToCert = Bundle.main.path(forResource: cert, ofType: "cer")
let localCertificate = NSData(contentsOfFile: pathToCert!)
let certificates = [SecCertificateCreateWithData(nil, localCertificate!)!]
// Configure the trust policy manager
let serverTrustPolicy = ServerTrustPolicy.pinCertificates(
certificates: certificates,
validateCertificateChain: true,
validateHost: true
)
// Create custom manager
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
let man = Alamofire.SessionManager(
configuration: URLSessionConfiguration.default,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
return man
}()
Мой метод запроса
static func get(endPoint: String,
parameters: [String : Any] = [:],
headers: [String : Any] = [:],
success : @escaping (Any) -> Void,
failure : @escaping (Error) -> Void) {
print("\(endPoint)")
request(URLString: endPoint, httpMethod: .get, parameters: parameters, headers: headers, success: success, failure: failure)
}
private static func request(URLString: String,
httpMethod: HTTPMethod,
parameters: [String : Any] = [:],
headers: [String : Any] = [:],
success : @escaping (Any) -> Void,
failure : @escaping (Error) -> Void) {
var additionalHeaders: HTTPHeaders?
print("Requestcheck")
additionalHeaders = headers as? HTTPHeaders
Manager.request(URLString, method: httpMethod,
parameters: parameters, encoding: httpMethod == .get ? URLEncoding.queryString : JSONEncoding.default,
headers: additionalHeaders).responseJSON { (response: DataResponse<Any>) in
parseResponse(response, success: success, failure: failure)
}
}
Мой файл Plist: -
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>https://xxx.xxx.xx.xxx/</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
и все еще я получаю.Загрузка не удалась с ошибкой Ошибка Domain = NSURLErrorDomain Code = -1202 "Сертификат для этого сервера недействителен. Возможно, вы подключаетесь к серверу, который притворяется« xxx.xxx.xx.xxx », что может подвергнуть риску вашу конфиденциальную информацию«.UserInfo = {NSLocalizedRecoverySuggestion = Вы все равно хотите подключиться к серверу?