IOS HTTPS 部署问题 NSURLSession/NSURLConnection HTTP load failed

从2017开始,IOS请求的接口都必须是https的,就算图片也必须是https的,所以服务器端需要配置https的环境,下面是我在配置过程中遇到的问题,希望可以帮到有需要的小伙伴。

环境说明

  • JDK1.8
  • Tomcat8.5
  • Nginx1.6
  • 证书:阿里云 Symantec 免费DV(可直接在阿里云上申请,免费的)

在浏览器Safari上打不开

配置好了之后(网上有很多配置https的教程,比我写的要好得多,我就不重复制造轮子了,我这里主要将一下我遇到的问题),访问https的地址,在谷歌浏览器,火狐浏览器,QQ浏览器上都可以打开,就是在IE和苹果Safari浏览器上打不开,不知道是为什么。

之后做了各种工作,原先以为是https证书的问题,换了startssl的证书,又换了let's Encrypt的证书,还是打不开,后来考虑到如果是证书的问题,应该提示的是链接不安全,而不是打不开啊,后来感觉是配置的问题,就开始找配置文件修改配置。

遇到的问题 -9802

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

在浏览器上打不开的同时,如果IOS端请求https的url还会报上面的错误,真的是很头疼,原来以为是IOS端配置的问题,让IOS哥们改了好多配置最后还是不行。

后来在网上找资料查询才知道nginx需要配置https环境,tomcat也是需要配置https环境的,我没有配置tomcat的https的环境...

然后我找了一个资料找到值配置nginx不用配置tomcat的方法,下面是详细的配置文件和说明。

方法不重要,重要的还是解决事情的思路。

nginx的配置

说明:我tomcat使用的端口是9090ali.shop.example.com.pem,ali.shop.example.com.key是在阿里申请的证书。

upstream tomcat {
    server 127.0.0.1:9090 fail_timeout=0;
}
# HTTPS server
server {
    listen       80;
    listen       443 ssl;
    server_name  shop.example.com;

    root /data/wwwroot/shop.example.com;

    ssl_certificate      /usr/local/tengine/conf/ssl/ali.shop.example.com.pem;
    ssl_certificate_key  /usr/local/tengine/conf/ssl/ali.shop.example.com.key;

    ssl_session_cache    builtin:1000 shared:SSL:10m;
    ssl_session_timeout  5m;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers  on;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect off;
        proxy_connect_timeout      240;
        proxy_send_timeout         240;
        proxy_read_timeout         240;
        proxy_pass http://tomcat;
    }
}

tomcat的配置

说明: proxyPort="443" 这里必须是443,当然 redirectPort 也必须是 443。在添加Value的配置就可以了,不用启动443端口



  
    

    

      
            
      
    
  

完结

到这里配置就完成了,希望可以帮助到有需要的小伙伴,没有成功的可以留言哦。

你可能感兴趣的:(IOS HTTPS 部署问题 NSURLSession/NSURLConnection HTTP load failed)