今天线上使用以前的一个功能的时候,发现ios的Native App里使用webView打开银行网站会出现打不开的问题
抓系统日志发现network err 9836
完全没有头脑,各种google也没有找到个所以然
后来问过大佬们发现,实际是因为TLS版本支持问题导致的
我们app中使用的
App Transport Security Settings
中,单独配置域名的情况下,我们没有分别配置
NSExceptionMinimumTLSVersion
这一项,从而导致系统默认会使用TLSv1.2去调用web相关的内容,而在要访问的页面中,使用https链接访问,但是实际网站支持的TLS版本为v1.1甚至1.0版本,所以导致无法访问(iOS9 默认使用TLSv1.0,所以可以访问页面,官方给出的是默认为1.2版本,暂不清楚原因)
查看网站TLS版本命令可以使用下面两种方式:
nscurl --ats-diagnostics xxx.com
该命令只要看到Configuring TLS exceptions for xxx.com中,TLSv1.2版本的Result为Pass,默认配置即可访问
openssl s_client -connect example.com:443 -tls1_2
-tls1_2 - just use TLSv1.2 -tls1_1 - just use TLSv1.1 -tls1 - just use TLSv1
该命令只要拿到的结果为加密字符,则默认配置即可访问
目前的解决方式:
NSExceptionMinimumTLSVersion
配置为TLSv1.0
即可
暂未提交审核,无法确定是否可以通过苹果的审核