carolAnn 2016-12-15
一、需求
iOS9中新增AppTransportSecurity(简称ATS)特性,主要使到原来请求的时候用到的HTTP,都转向TLS1.2协议进行传输。这也意味着所有的HTTP协议都强制使用了HTTPS协议进行传输。因此移动api需要配置为https并且要支持tls1.2
二、项目情况
服务器端:公司的服务器的采用的操作系统是centos,开发语言php,web容器采用的nginx。
客户端:iosandroid
客户端和服务的通信采用http和json
app内的部分功能通过webbiew加载h5完成。
三、最终配置成功
nginx.conf中的相关配置如下:
server { server_name mobileapi.xx.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/mobileapi.xx.com/web; listen 443 ssl; ssl on; ssl_certificate /home/wwwroot/ssl.xx.com/xx.crt; ssl_certificate_key /home/wwwroot/ssl.xx.com/xx.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on; include none.conf; location ~ .*\.(php|php5)?$ { try_files $uri =404; #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } location /{ if (!-e $request_filename){ rewrite ^/(.*) /index.php last; } } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log off; }
四、关键软件的版本
nginx1.11.7
openssl1.0.1e-fips
contos6.3
五、nginx和openssl安装
openssl安装yuminstallopenssl
从官网下载nginx1.11.7
nginx安装命令:./configure--prefix=/usr/local/nginx1_11_7--with-http_ssl_module
六、测试方法
nscurl--ats-diagnosticshttps://mobileapi.xx.com
如果全部pass证明配置成功
七、遇到的坑
nginx当时是1.4.4版本太低,不支持tls1.2
openssl版本太低,当时是0.9.8e
CentOS如果是5.x的,升级openssl要手工,没法用yum
七、参考资料
https://my.oschina.net/vimfung/blog/494687
https://zhidao.baidu.com/question/1114939951869020059.html
http://blog.sina.com.cn/s/blog_4e11d20b0102vmne.html
http://bguncle.blog.51cto.com/3184079/1392870/
http://www.cnblogs.com/hitwtx/archive/2012/02/13/2349742.html
https://my.oschina.net/u/1423896/blog/267511