NSURLErrorServerCertificateUntrusted (код -1202) — Foundation Network layer iOS/macOS отверг сервер SSL cert. Причина: self-signed, expired, untrusted CA, пустой SAN, или cert не удовлетворяет ATS (App Transport Security) requirements. В 2026 iOS требует TLS 1.2+, forward secrecy, SHA-256+ signature. Fix: реальный cert от Let's Encrypt/Sectigo, или для dev — NSAllowsArbitraryLoads (НЕ production).
Ниже: причины, исправление, FAQ.
Бесплатный онлайн-инструмент — SSL-чекер: результат мгновенно, без регистрации.
urlSession:didReceiveChallenge:NSAppTransportSecurity > NSExceptionDomains для specific domain (осторожно)Ошибка NSURLErrorServerCertificateUntrusted (-1202) возникает, когда приложение на iOS или macOS не может установить доверие к SSL-сертификату сервера. Это может произойти из-за самоподписанного сертификата, недействительного сертификата или проблем с цепочкой доверия. Для решения этой проблемы необходимо убедиться, что сертификат сервера корректен и подпись сертификата доверена.
Ошибка NSURLErrorServerCertificateUntrusted может возникать по нескольким причинам:
Для устранения ошибки можно использовать следующие подходы:
Для добавления сертификата на macOS можно использовать следующую команду:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/your/certificate.crtЭта команда добавляет сертификат в системный ключ, что позволяет ему быть доверенным.
Рассмотрим практический пример исправления ошибки NSURLErrorServerCertificateUntrusted на iOS. Предположим, вы пытаетесь подключиться к вашему серверу, но получаете ошибку. Вот шаги, которые можно предпринять:
openssl s_client -connect yourserver.com:443Эта команда покажет информацию о сертификате, включая ошибки, если они есть.
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.URLCache = [[NSURLCache alloc] init];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];Не забудьте реализовать метод делегата для обработки сертификатов:
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
} else {
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
}
}Этот код позволяет вашему приложению доверять сертификату сервера. Однако, помните, что этот подход не рекомендуется для продакшн-среды из-за соображений безопасности.
Следуя этим шагам, вы сможете устранить ошибку NSURLErrorServerCertificateUntrusted и обеспечить надежное соединение с вашим сервером.
SSL/TLS — протокол шифрования, который защищает данные между браузером и сервером. Наш инструмент анализирует сертификат, цепочку доверия, версию TLS и известныеуязвимости.
Издатель, срок действия, алгоритм подписи, покрываемые домены (SAN) и тип валидации (DV/OV/EV).
Проверка полной цепочки: от конечного сертификата через промежуточные до корневого CA.
Версия протокола (TLS 1.2/1.3), набор шифров, поддержка Perfect Forward Secrecy (PFS).
Создайте монитор — получайте уведомления в Telegram и email за 30/14/7 дней до истечения.
мониторинг SSL-сертификатов
аудит TLS-конфигурации
HTTPS как фактор ранжирования
доверие покупателей
www и поддомены.Strict-Transport-Security заставляет браузер всегда использовать HTTPS.Мониторинг SSL-сертификатов, история проверок и уведомления за 30 дней до истечения.
Зарегистрироваться (FREE)Info.plist → NSAppTransportSecurity → NSExceptionDomains → your-dev-domain → NSExceptionAllowsInsecureHTTPLoads=YES. Но только debug builds.
SHA-256 hash certificate или SPKI pin. Rotate вместе с cert, провалидируйте при каждом build.
Да, Foundation по default. Нужен custom trust eval через URLSessionDelegate.
TLS 1.2+, ECDHE forward secrecy, AES-128-GCM+, SHA-256 signature. Cert с SAN (обязательно).
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.