URLSession发送POST请求偶现(kCFStreamErrorDomainSSL,-9800)错误求助
NSURLSession偶发SSL错误(kCFStreamErrorDomainSSL, -9800)排查求助
我现在被一个偶发的SSL连接错误搞得焦头烂额,真心希望各位能给我一些思路和帮助!
问题详情
- 我在iOS端用URLSession发送POST请求时,会偶发出现错误:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9800),并不是每次请求都会触发这个问题。 - 我的APP需要每秒发送一次请求来轮询新数据,目前怀疑问题可能和短时间内的高频请求有关,但还没完全确认这一点。
- 服务端用的是GoDaddy的SSL证书,直接访问网站时浏览器左上角显示安全状态正常;Web服务器是Tomcat,查看catalina.out日志也没发现相关异常。
已执行的诊断操作
我运行了ATS诊断命令:
nscurl --ats-diagnostics https://***
结果如下:
Configuring TLS exceptions for *** --- TLSv1.3 2018-05-16 11:35:00.691 nscurl[92034:10819554] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9800) Result : FAIL --- Configuring TLS exceptions with PFS disabled for *** --- TLSv1.3 with PFS disabled 2018-05-16 11:35:01.273 nscurl[92034:10819468] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9800) Result : FAIL --- Configuring TLS exceptions with PFS disabled and insecure HTTP allowed for *** --- TLSv1.3 with PFS disabled and insecure HTTP allowed 2018-05-16 11:35:01.591 nscurl[92034:10819579] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9800) Result : FAIL ---
其余所有ATS配置项均通过了检测。
已尝试的解决方法
我尝试修改Info.plist中的NSAppTransportSecurity配置,先后试过:
- 取消注释并配置例外域的相关设置(关闭前向保密、允许不安全HTTP、指定最低TLS版本为1.2)
- 开启
NSAllowsArbitraryLoads
但这两种方法都没能解决问题,而且NSAllowsArbitraryLoads存在安全隐患,我希望尽量避免使用它。
附上我试过的Info.plist配置片段:
<key>NSAppTransportSecurity</key> <dict> <!-- <key>NSExceptionDomains</key>--> <!-- <dict>--> <!-- <key>***</key>--> <!-- <dict>--> <!-- <key>NSExceptionRequiresForwardSecrecy</key>--> <!-- <false/>--> <!-- <key>NSExceptionAllowsInsecureHTTPLoads</key>--> <!-- <true/>--> <!-- <key>NSExceptionMinimumTLSVersion</key>--> <!-- <string>TLSv1.2</string>--> <!-- </dict>--> <!-- </dict>--> </dict>
真心感谢各位抽出时间看我的问题,期待能得到大家的建议!
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

