iOS適配Https

由于蘋果是17年的1月1日期審核要求強制開啟ATS,所以各個應(yīng)用的程序員都已經(jīng)開始了https的適配忆植。下面介紹一下我司的適配。
原理:
HTTPS連接建立過程大致是继蜡,當(dāng)客戶端和服務(wù)端連接的時候爷怀,服務(wù)端返回一個證書剧辐,客戶端里存有受信任的證書機構(gòu)根證書,用這些根證書對服務(wù)端返回的證書進行驗證蜘醋,經(jīng)驗證如果證書是可信任的胁塞,就生成一個pre-master secret,用這個證書的公鑰加密后發(fā)送給服務(wù)端,服務(wù)端用私鑰解密后得到pre-master secret啸罢,再根據(jù)某種算法生成master secret编检,客戶端也同樣根據(jù)這種算法從pre-master secret生成master secret,隨后雙方的通信都用這個master secret對傳輸數(shù)據(jù)進行加密解密扰才。

開發(fā):
因為我們的應(yīng)用是使用猿題庫的網(wǎng)絡(luò)請求允懂,而猿題庫是在AFNetworking的基礎(chǔ)上封裝的,https的驗證主要就是AFSecurityPolicy模塊衩匣。

/**
  驗證方式
 */
@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode;

/**
客戶端的證書文件
 */
@property (nonatomic, strong, nullable) NSArray *pinnedCertificates;

/**
是否允許客戶端驗證通過一個無效的服務(wù)端證書
 */
@property (nonatomic, assign) BOOL allowInvalidCertificates;

/**
是否驗證域名有效性
 */
@property (nonatomic, assign) BOOL validatesDomainName;

/**
生成一個默認(rèn)的對象累驮,會加載本地的bundle里尋找到的cer文件
*/
+ (instancetype)defaultPolicy;

/**
該域名是否通過證書驗證
 */
- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
                  forDomain:(nullable NSString *)domain;

如果你跟我一樣使用的猿題庫的框架,你只需要這樣做.

    // 配置HTTPS
    YTKNetworkConfig *config = [YTKNetworkConfig sharedInstance];
    config.baseUrl = @"";
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"" ofType:@""];
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    config.securityPolicy.allowInvalidCertificates = YES;
    config.securityPolicy.validatesDomainName = NO;
    config.securityPolicy.pinnedCertificates = @[certData];

這樣就基本上結(jié)束了舵揭。
如果這時候用的有第三方的分享或者統(tǒng)計的sdk的話谤专,更換一下sdk就好了;不能添加https的需要在plist里添加說明午绳,

    <key>sina.com.cn</key> 
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSExceptionMinimumTLSVersion</key>
        <string>TLSv1.0</string>
        <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
        <false/>
    </dict>

如果服務(wù)器有用到cdn的或者oss對象存儲的置侍,在阿里云配一下證書就好了,需要上傳私鑰(這個有點兒擔(dān)心),他默認(rèn)的配置是支持http和https的,所以并不會影響老用戶拦焚。改為https下載的話蜡坊,我們可以使用證書驗證,但是我為了方便下載赎败,沒有做這一步秕衙。
在NSURLConnection的回調(diào)里,只需要這樣僵刮。

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
//默認(rèn)驗證通過
    NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}

蘋果這么做据忘,也是為了用戶的數(shù)據(jù)安全和隱私,雖然讓很多廠商和開發(fā)者不爽搞糕,但是從長遠(yuǎn)看的話還是大勢所趨勇吊,所以大家就辛苦一下趕緊適配吧。
補充:其實客戶端適配Https沒有必須強制要證書的窍仰,直接換一下URL就可以了汉规。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驹吮,隨后出現(xiàn)的幾起案子针史,更是在濱河造成了極大的恐慌,老刑警劉巖碟狞,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啄枕,死亡現(xiàn)場離奇詭異,居然都是意外死亡篷就,警方通過查閱死者的電腦和手機射亏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竭业,“玉大人智润,你說我怎么就攤上這事∥戳荆” “怎么了窟绷?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咐柜。 經(jīng)常有香客問我兼蜈,道長,這世上最難降的妖魔是什么拙友? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任为狸,我火速辦了婚禮,結(jié)果婚禮上遗契,老公的妹妹穿的比我還像新娘辐棒。我一直安慰自己,他們只是感情好牍蜂,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布漾根。 她就那樣靜靜地躺著,像睡著了一般鲫竞。 火紅的嫁衣襯著肌膚如雪辐怕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天从绘,我揣著相機與錄音寄疏,去河邊找鬼。 笑死僵井,一個胖子當(dāng)著我的面吹牛赁还,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驹沿,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼艘策,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了渊季?” 一聲冷哼從身側(cè)響起朋蔫,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎却汉,沒想到半個月后驯妄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡合砂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年青扔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡微猖,死狀恐怖谈息,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凛剥,我是刑警寧澤侠仇,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站犁珠,受9級特大地震影響逻炊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犁享,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一余素、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炊昆,春花似錦溺森、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磅甩,卻和暖如春炊林,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卷要。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工渣聚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僧叉。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓奕枝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓶堕。 傳聞我的和親對象是個殘疾皇子隘道,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容