У меня есть приложение iOS, которое использует SSL/HTTPS для связи с сервером. Сервер предоставляет сертификат, который работает над TLSv1.2 (основное требование безопасности транспорта приложений). Пример URL, который демонстрирует это (где TLSv1.2 может быть проверен путем проверки сертификата) - https://api.branon.co.uk/checkOnline.iOS App Transport Безопасность, не допускающая соединения TLSv1.2 и исключения plist, не имеет значения
Однако приложение вызывает ошибки, связанные с уровнем транспорта приложений - ошибки, которые при использовании Googled подразумевают, что сервер не работает над TLSv1.2. Пример ошибки:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
и:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
Я даже добавил кучу исключений в файл Plist, например:
<dict>
<key>NSExceptionDomains</key>
<dict>
<key><my top level domain - the app uses a subdomain - allowed below></key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
</plist>
, но это Безразлично Не изменяйте результат.
Используемый сертификат является бесплатным сертификатом от StartCom. Моя конфигурация nginx приведена ниже (только для справки).
server {
listen [::]:443 ssl;
listen 443 ssl;
ssl on;
ssl_certificate /root/ssl/<domain>.crt;
ssl_certificate_key /root/ssl/server.key;
server_name api.<domain>;
access_log /var/log/nginx/api.access.log;
error_log /var/log/nginx/api.error.log;
location ~ ^/([a-zA-Z]+)$ {
proxy_pass http://127.0.0.1:5000/$1;
}
}
Есть ли у кого-нибудь идеи, почему это происходит?
Спасибо!
Update: По результатам @ Paulw11 предложено, тест (ниже) работает nscurl, я решил просто попробовать отключить App Transport Security полностью. Я изменил словарь безопасности в приложении для переноски приложений в своем plist:
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
и по-прежнему получаю ту же ошибку! Так что, если это не App Transport Security, что может быть причиной этого? Это ошибка, я получаю снова: NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
Что вы получите, если вы запустите 'nscurl -ats-diagnostics * yoururl * --verbose' в терминале OS X? – Paulw11
@ Paulw11 Каждый тест проходит. Это очень запутанно! Любая идея, почему iOS все равно будет отвергать это? –
Вы пробовали использовать промежуточный сертификат для api.branon.co.uk через директиву ssl_certificate в nginx?(комбайнировать .crt и <промежуточный сертификат>, полученный с https://whatsmychaincert.com/?api.branon.co.uk) –