Я хочу, чтобы мое быстрое приложение позволяло отправлять https-запрос на node.js, а затем postgre, чтобы избежать "человека посередине". 1. Из браузера все работает нормально. 2. Из локального Ma c ОС работает нормально. 3. Но из iOS приложения не работает вообще - ошибка 9843
Swift Code:
import Foundation
import Alamofire
class NetworkManager {
static let sharedInstance = NetworkManager()
let manager: Alamofire.SessionManager = {
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"https://sensemp.ru:51342/employee/req": .pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: true,
validateHost: true),
"sensemp.ru:51342/employee/req": .disableEvaluation
]
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
return Alamofire.SessionManager(
configuration: configuration,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
}()
}
и View Controller :
override func viewDidLoad() {
super.viewDidLoad()
//...
NetworkManager.sharedInstance.manager.request("https://sensemp.ru:51342/employee/req", method: .get).responseJSON{ response in
switch response.result {
case .success(let value):
let json = JSON(value)
print("JSON: \(json)")
case .failure(let error):
print(error)
}
}
}
Проблема в том, что с самоподписанным сертификатом.
2020-05-06 22:21:21.256942+0300 AlamofireExample[32310:690636] Connection 1: default TLS Trust evaluation failed(-9843)
2020-05-06 22:21:21.257176+0300 AlamofireExample[32310:690636] Connection 1: TLS Trust encountered error 3:-9843
2020-05-06 22:21:21.257331+0300 AlamofireExample[32310:690636] Connection 1: encountered error(3:-9843)
Что об этом пишет Apple
Что не так с моим самоподписанным сертификатом?
Тот же случай и ответ от команды разработчиков Apple:
https://forums.developer.apple.com/thread/42555
Итак, TLSTool . / TLSTool s_client - connect sensemp.ru:51342 говорит мне:
входной поток открыт
выходной поток открыт
выходной поток имеет пробел
протокол: TLS 1.2
шифр: ECDHE_RSA_WITH_AES_128_GCM_SHA256
результат доверия: продолжить
информация о сертификате:
0 + rsaEncryption 2048 sha256-with-rsa-signature 'sensemp.ru'
Как исправить эту проблему?
PS: Ma c OS Catalina 10.15.4 | iOS 13.4.1 | nginx / 1.17.9 | PostgreSQL 12 | SSL
Заранее спасибо