还有 13 天,苹果就要关上 HTTP 大门了
2017年1月1日以后,所有iOS需要訪問網(wǎng)頁的 App 都要面臨一個問題:ATS(App Transport Security)。由于 ATS 要求 HTTPS 訪問,換句話來說,還有 13 天,蘋果就要對 APP 開發(fā)者們關(guān)閉 HTTP 的大門了。
1、什么是 ATS?
ATS 全稱 App Transport Security,是 iOS 9 引入的一套安全機制,默認行為會強制保證所有的網(wǎng)絡(luò)請求都使用 HTTPS。
2、繞過 ATS?
由于這樣的要求影響非常廣,蘋果也是考慮到開發(fā)者的過渡問題,預(yù)留了一些繞過 ATS 的方法。比如,可以通過在 Info.plist 中添加 NSAppTransportSecurity 字典并且將 NSAllowsArbitraryLoads 設(shè)置為 YES 來禁用 ATS。
但是到了 WWDC 16 后,蘋果對 ATS 的推進力度加大,要求從 2017 年 1 月 1 日起,所有的新提交 app 默認是不允許使用 NSAllowsArbitraryLoads 來繞過 ATS 限制的。
雖然還有其他的一些方法,但是緊隨蘋果的腳步,采用 HTTPS 傳輸顯然是更好、更安全的一個選擇。繞過 ATS 協(xié)議并不是一個好的方案,蘋果強推 ATS 的目的,也是在于防止意外泄露個人信息,并為應(yīng)用程序提供默認安全行為。
3、啟用 HTTPS
在 APP 的服務(wù)器上啟用 HTTPS 協(xié)議其實并沒有想象的那么復(fù)雜,只需要通過一些簡單的步驟部署 SSL 證書即可完成。
HTTPS,是指超文本傳輸安全協(xié)議(Hypertext Transfer Protocol Secure),是一種在 HTTP 協(xié)議基礎(chǔ)上進行傳輸加密的安全協(xié)議,能夠有效保障數(shù)據(jù)傳輸安全。
證書方面,可以選擇免費版的 Let's Encrypt,也可以購買權(quán)威機構(gòu)頒發(fā)的 CA 證書。后者是一個更加可靠、安全的選擇,許多云廠商也提供有類似的 SSL 證書服務(wù),并且可以部署到 CDN 上。
由于筆者個人使用騰訊云的服務(wù)比較多,下面以騰訊云為例介紹如何申請、部署 SSL 證書。騰訊云的 SSL 證書是由 GeoTrust 頒發(fā)的,可免費使用一年。如果你是阿里云或其他云廠商的用戶,可以查看各自對應(yīng)的證書產(chǎn)品。
3.1、申請證書
登錄騰訊云之后,前往 SSL 證書管理控制臺,點擊申請證書,會彈出證書選擇框。目前只能選擇 GeoTrust 頒布的證書,后續(xù)似乎會開放更多證書廠商的產(chǎn)品。
接下來,需要填寫一些申請信息,最重要的是綁定域名。假如你的域名的 abc.com,需要填寫的必須是類似 a.abc.com 這樣非頂級域名。
下一步,會要求手動進行 DNS 驗證。具體的步驟可參考產(chǎn)品文檔:域名驗證指引。
一般配置正確的話,很快就可以拿到屬于自己的免費證書了。據(jù)筆者個人的情況來看,大概一刷新就可以通過審核。
3.2、服務(wù)器安裝證書
審核通過后,可以在SSL 證書管理控制臺看到證書下載鏈接。先將證書下載到本地,并上傳到 App的服務(wù)器,為服務(wù)器上安裝證書做好準備。
這里,我們以較為常用 Nginx 為例介紹具體安裝過程。如果使用的是 Apache 或 IIS 等其他服務(wù)器,請參考官方文檔。
3.2.1 獲取證書
Nginx文件夾內(nèi)獲得SSL證書文件 1_www.domain.com_bundle.crt 和私鑰文件 2_www.domain.com.key:
1_www.domain.com_bundle.crt 文件包括兩段證書代碼 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”
2_www.domain.com.key 文件包括一段私鑰代碼“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。
3.2.2 證書安裝
將域名 www.domain.com 的證書文件 1_www.domain.com_bundle.crt 、私鑰文件 2_www.domain.com.key 保存到同一個目錄,例如 /usr/local/nginx/conf 目錄下。
更新Nginx根目錄下 conf/nginx.conf 文件如下:
server {listen 443;server_name www.domain.com; #填寫綁定證書的域名ssl on;ssl_certificate 1_www.domain.com_bundle.crt;ssl_certificate_key 2_www.domain.com.key;ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協(xié)議配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置ssl_prefer_server_ciphers on;location / {root html; #站點目錄index index.html index.htm;}}配置完成后,先用 bin/nginx –t 來測試下配置是否有誤。正確無誤的話,重啟 nginx,就可以使 https://www.domain.com 來訪問了。
4. CDN 上部署 HTTPS
很多網(wǎng)站都會使用 CDN 服務(wù),因為云廠商一般有提供一些免費的 CDN 流量額度,比如騰訊云就有 60GB 的免費流量。
對于使用了 CDN 的 App 或網(wǎng)站,還可以將 HTTPS 部署在全網(wǎng) CDN 節(jié)點,實現(xiàn)全網(wǎng)數(shù)據(jù)加密傳輸功能。
4.1 配置 HTTPS 的條件:
域名管理頁面,域名的狀態(tài)為 部署中 或 已啟動。
域名不是由 COS 同步而來的 .file.myqcloud.com 后綴域名。
域名的接入方式為 自有源 或者 COS源、FTP源。
登錄CDN控制臺,進入 【域名管理】 頁面,點擊域名右側(cè) 管理 按鈕,進入管理頁面:
在 【高級配置】中找到 HTTPS 配置模塊
4.2 證書類型
騰訊云 CDN 目前支持兩種方式部署證書:
自有證書:將自有證書、私鑰內(nèi)容上傳至 CDN 進行部署,全程加密傳輸,證書不落地,保障您的證書安全。
騰訊云托管證書:也就是上面咱們已經(jīng)申請成功的 SSL 證書。
4.3 證書配置
前往CDN高級工具-證書管理界面,
根據(jù)情況選擇希望配置證書的域名、證書類型和回源方式即可。這里需要滿足前面提到的這個條件:域名的狀態(tài)為 部署中 或 已啟動。
勾選“騰訊托管證書”后,可以在證書列表下拉菜單中找到剛才申請到的證書。回源方式選擇為 HTTPS,之后提交即可。
證書配置成功后,會出現(xiàn) 強制跳轉(zhuǎn) 開關(guān),開啟后,即使用戶發(fā)起 HTTP 請求,也會強制跳轉(zhuǎn)為 HTTPS進行訪問。
檢測部署效果
完成上面一系列的操作之后,還需要最后確認部署的 SSL 證書是否符合 ATS 要求。否則,折騰了那么久,最終卻是做了無用功的話,那是非常痛苦的一件事。
對此,云廠商也是提供了較為方便的檢測方式,只需要輸入目標域名即可一鍵檢測。
至此,就完成了 App 服務(wù)器的 SSL 證書部署,并滿足了蘋果 ATS 協(xié)議的嚴格要求。
總結(jié)
以上是生活随笔為你收集整理的还有 13 天,苹果就要关上 HTTP 大门了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何实时查看mysql当前连接数
- 下一篇: CS大战