2017年1月1日開始,蘋果要求所有iOS應用必須使用ATS(App Transport Security),即APP內連接必須使用安全的HTTPS。并不簡單是一個HTTPS協議,而且要滿足iOS9中新增特性。雖然目前已經無限期推遲了這個計劃,但該來的總會來的。
安全的HTTPS
安全的HTTPS主要包括以下幾點:
1、證書頒發機構的要求
2、傳輸協議的要求
3、簽字算法的要求
4、證書的哈希算法和秘鑰長度的要求
更詳細的關于這些要求的解釋可以在阿里云查看
證書申請
由于我的服務器、域名都在阿里云,所以使用了阿里云提供的證書服務。
證書購買
1.選擇 購買證書 即可進入證書購買頁面。可以按照需求配置您的證書。這里我選擇了 免費型DV SSL 證書(畢竟不要錢) 這里選擇的品牌滿足了 [1、證書頒發機構 的要求]。推薦選擇Symantec/GeoTrust品牌的OV及以上證書。CFCA雖然是國產的,但是CFCA品牌只在最新的蘋果設備上才支持,不推薦CFCA品牌
2.購買完成夠并不意味著您的證書可以使用了,還需要提交審核,完善基本信息
簽發SSL證書
1.購買證書完成后,可以在 控制臺->安全(云盾)->證書服務 中找到您的訂單 選擇 “信息補全”
2.根據您的需求補全您的信息,最后提交審核即可。更詳細的流程您可以去這里查看。在這個過程中可以選擇系統創建CSR方式,它的秘鑰是2048為的RSA加密算法,并且阿里云提供的證書品牌中是哈希算法都是SHA256或者更高強度的算法 滿足了 [4、證書的哈希算法和秘鑰長度的要求]
下載簽發的證書
1.等待審核通過后選擇下載,進入下載頁面。根據服務器類型選擇不同的下載證書,這里我選擇了Nginx環境下的證書下載。下載到本地后解壓會發現里面有兩個文件分別是.key和.pem文件,它們就是我們的最終證書。
2.上傳.key和.pem文件到服務器的任意目錄下。記一下它們的路徑,待會會用到。
3.一個完整可用的證書就制作好了,下面就是配置您的服務器了
Nginx服務器配置
1.需要檢查Nginx的SSL模塊是否安裝。在nginx/sbin 文件夾下運行
nginx -v
configure arguments中存在 --with-http_ssl_module 說明SSL模塊以及安裝
1.進入到您要配置的域名的conf文件中。
cd /usr/local/nginx/conf/vhost/
vi api.conf
2.修改您的nginx配置文件
2.1 將listen 80;修改成監聽443端口
2.2 加入2號框中的配置
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/apissl/213985405980765.pem; #上傳的證書pem文件
ssl_certificate_key /usr/local/nginx/conf/ssl/apissl/213985405980765.key; # 上傳的證書key文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #設置傳輸協議 蘋果要求必須滿足 TLSv1.2 這里滿足了 [2.傳輸協議的要求]
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; # 簽字算法 [3.簽字算法的要求]
ssl_prefer_server_ciphers on;
2.3 為了解決修改為https后http無法訪問的問題可以加入 3號框 中的代碼 將http重定向到https
3.重啟nginx服務器 查看端口狀態
lnmp restart nginx //重啟nginx 不同的系統請選擇不同的重啟方式
netstat -lntup|grep 443 //查看443端口狀態
查看效果
1.打開瀏覽器輸入 http://api.eastwu.cn 或者 https://api.eastwu.cn 查看查看是否能夠正確訪問
2.檢查是否滿足ATS可以使用MAC自帶的命令
nscurl --ats-diagnostics --verbose https://api.eastwu.cn
檢查全部通過,說明HTTPS配置成功了