iOS APP配置HTTPS流程

您的APP啟用HTTPS了嗎?距離2017年1月1日"蘋果iOS強制要求HTTPS連接"還有不到1個月的時間,是否支持HTTPS直接影響APP能否在蘋果商店順利上架。本文將幫助您更快實施HTTPS!

1. 背景

2017年1月1日起,蘋果AppStore中的所有App都必須啟用 App Transport Security(ATS)安全功能。App TransportSecurity(應(yīng)用程序安全傳輸),簡稱 ATS,是蘋果在 iOS 9 中首次推出的一項隱私安全保護功能,啟用ATS后,它會屏蔽明文HTTP資源加載,強制App通過HTTPS連接網(wǎng)絡(luò)服務(wù),通過傳輸加密保障用戶數(shù)據(jù)安全。ATS在 iOS 9 中是默認(rèn)開啟的,但開發(fā)者仍然可以選擇關(guān)閉 ATS,讓自己的應(yīng)用通過 HTTP 連接傳輸數(shù)據(jù)。但從2017年1月1日起,這招將行不通了,所有提交到 App Store 的App必須強制開啟 ATS。

2. 影響

100%被拒的情況:

NSAllowsArbitraryLoads,打開此開關(guān)相當(dāng)于關(guān)閉ATS

NSExceptionAllowsInsecureHTTPLoads,使用自有網(wǎng)站的HTTP鏈接

NSExceptionMinimumTLSVersion,使用自有網(wǎng)站低于TLS1.2標(biāo)準(zhǔn)的HTTPS鏈接

以下幾種情況是特例,不會被拒:

App提供流媒體服務(wù),媒體源已經(jīng)對內(nèi)容進行了加密,這時只要使用蘋果的AV Foundation框架加載內(nèi)容,就可以無視ATS;

App的內(nèi)容如果有來自已知的第三方,不過最好的做法是和第三方溝通下,敦促他們所有傳輸都使用TLS1.2加密。

App的內(nèi)容來自于不可知的第三方,比如說允許用戶通過App訪問任意網(wǎng)站,比如說瀏覽器app,可以忽視ATS。

3.為什么要用HTTPS

簡單地說,HTTP是明文協(xié)議,通過該協(xié)議傳輸?shù)臄?shù)據(jù)處在被竊聽、篡改、冒充這三大風(fēng)險中,已經(jīng)是非常不安全的傳輸協(xié)議。HTTPS是加密協(xié)議,就是在HTTP的基礎(chǔ)上開啟一條SSL加密通道,讓原本明文“裸奔”的數(shù)據(jù),從加密通道中密文傳輸,保證了數(shù)據(jù)傳輸?shù)陌踩浴?/p>

4.準(zhǔn)備工作

申請一個SSL證書

SSL證書按驗證的類別可分:

DV SSL證書(域名驗證型):只驗證域名所有權(quán),適合個人網(wǎng)站、博客等站點使用;

OV SSL證書(企業(yè)驗證型):驗證網(wǎng)站所屬單位身份,適合企業(yè)級用戶使用;

EV SSL證書(擴展驗證型):擴展驗證網(wǎng)站所屬單位身份,這種證書在瀏覽器中會顯示醒目的綠色地址欄,可信度最高,適合需要用戶高度信任的企業(yè)級用戶使用。

SSL證書類別

沃通新證書產(chǎn)品已經(jīng)上線,支持蘋果iOS系統(tǒng),新品推廣期間申請沃通超真SSL Pre通配型證書可享8折優(yōu)惠,名額有限先到先得。

5.AFN配置HTTPS

5.1.項目中的網(wǎng)絡(luò)交互都是基于AFN,要求AFN版本在3.0及其以上;

5.2.代碼部分

設(shè)置AFN請求管理者的時候 添加 https ssl 驗證。
/**
// 1.獲得請求管理者

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 2.加上這個函數(shù),https ssl 驗證。

[manager setSecurityPolicy:[self customSecurityPolicy]];

// https ssl 驗證函數(shù)

  • (AFSecurityPolicy *)customSecurityPolicy {

// 先導(dǎo)入證書

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];//證書的路徑

NSData *cerData = [NSData dataWithContentsOfFile:cerPath];

// AFSSLPinningModeCertificate 使用證書驗證模式

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

// allowInvalidCertificates 是否允許無效證書(也就是自建的證書),默認(rèn)為NO

//validatesDomainName 是否需要驗證域名,默認(rèn)為YES;
**/
5.3.關(guān)于證書

從沃通獲取到HTTPS證書后,會得到一個有密碼的壓縮包文件,使用for other server里面的domain.crt的證書文件。

6.后臺服務(wù)器配置HTTPS證書(Ngnix)

從沃通證書文件壓縮包中,打開其中的for Nginx 文件可以看到 2 個文件,包括公鑰、私鑰。

打開Nginx安裝目錄下conf目錄中的nginx.conf文件找到

HTTPS server

server {

listen 443;

server_name localhost;

ssl on;

ssl_certificate cert.pem;

ssl_certificate_key cert.key;

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

將其修改為 :

server {

listen 443;

server_name localhost;

ssl on;

ssl_certificate sslkey/public.cer; (證書公鑰)

ssl_certificate_key sslkey/private.key; (證書私鑰)

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1TLSv1.2;

ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

保存退出,并重啟Nginx。

通過https方式訪問您的站點,確認(rèn)站點證書安裝配置正確。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.準(zhǔn)備工作 申請一個 SSL 證書 ,可在沃通WoSign網(wǎng)站申請所需SSL證書類型。SSL證書按驗證的類別可分...
    南南總是懶懶閱讀 597評論 0 1
  • 2017年1月1日"蘋果iOS強制要求HTTPS連接",來提高數(shù)據(jù)傳輸之間的安全性,雖然之后又把時間推遲至待定,但...
    _Miyo閱讀 958評論 1 2
  • 上一篇《iOS安全系列之一:HTTPS》被CocoaChina轉(zhuǎn)載,還順便上了下頭條: 打造安全的App!iOS安...
    番薯大佬閱讀 1,402評論 1 4
  • 歡迎大家來到簡書故事寫作投稿專場。 以下是簡書正在征稿期的故事活動,選擇你感興趣的活動參加吧!掃描底部微信二維碼還...
    簡書茶館葉老板閱讀 15,148評論 47 201
  • 昨天下班回到家已經(jīng)比平常晚了一個小時,寒風(fēng)凜冽,單薄的毛衣 ,刺骨的冷,使我意識到深圳的冬天真的要在一月份如約而至...
    以淺閱讀 356評論 0 4

友情鏈接更多精彩內(nèi)容