首先,我知道有 吨 类似的问题,但我所见过的似乎都没有解决我的设置问题(我发现的任何解决方案都没有工作)。所以请耐心等待...
https://XXX.YYY.ZZZ.WWW:9443/etc...
)。NSAppTransportSecurity
字典为空(没有任何异常(exception) - 出厂设置 ATS)。(在 iOS 9 上测试,部署目标是 iOS 8.x)
我在尝试连接时收到此错误:
CFNetwork SSLHandshake failed (-9806) NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9806) Error: An SSL error has occurred and a secure connection to the server cannot be made.
(设备和模拟器)
我尝试用命令行工具nscurl
描述here .我明白了:
为 XXX.YYY.ZZZ.WWW 配置 TLS 异常(exception):(TLS 1.2、1.1 和 1.0)CFNetwork SSLHandshake 失败 (-9806)
禁用完美前向保密: CFNetwork SSLHandshake 失败 (-9801)
禁用完美前向保密并允许不安全的 HTTP: CFNetwork SSLHandshake 失败 (-9801)
禁用 PFS 的 TLSv1.2: CFNetwork SSLHandshake 失败 (-9801)
禁用 PFS 的 TLSv1.1: CFNetwork SSLHandshake 失败 (-9801)
禁用 PFS 的 TLSv1.0: NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9802)
禁用 PFS 且允许不安全 HTTP 的 TLSv1.2: CFNetwork SSLHandshake 失败 (-9801)
...你得到了演习。
我正在检查服务器支持哪个 TLS 版本(据我研究,这是最大的嫌疑人),但也许还有其他问题我需要修复/检查客户端?
我认为您需要检查服务器上的证书。您应该能够使用 openssl 客户端来调查您的证书并获取服务器的 ssl 配置:
openssl s_client -connect XXX.YYY.ZZZ.WWW:9443
您应该获得有关证书的一些详细信息
SSL session : 协议(protocol):TLSv1 密码:AES256-SHA session ID:// session ID-ctx: 主 key :// 键-Arg:无 开始时间:1449693038 超时:300(秒) 验证返回码:0(ok)
或者,您可以使用 symantec 之类的网站查询证书,看看是否满足 TLS1.2、足够强的 key 和前向保密的要求。
另外,您可以尝试打开 CFNetwork 诊断日志记录。编辑 Xcode 方案并添加 CFNETWORK_DIAGNOSTICS 环境变量。将日志记录级别设置为最详细的 3:
Xcode 控制台显示日志文件的位置:
CFNetwork diagnostics log file created at: /private/var/mobile/Containers/
Data/Application/A3421F00-451A-CD70-1B82-B163D1A3BB0F/Library/Logs/
CrashReporter/CFNetwork_com.sample.app_118.nwlrb.log
您可以查看这些日志,看看是否有更多信息说明网络调用失败的原因。
关于ios - 无法使用 HTTPS 连接到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852829/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |