iOS 配置https

貌似在iOS9之后纳猫,官方默認只能訪問https披诗。如果訪問的https都是安全的,則不需要做任何配置囱挑。



安全的https都是通過官方認可的機構購買的SSL證書萌丈,如果是自己配置的證書則需要做一下配置了瘟忱。

1耐朴、SSL證書

向后臺開發(fā)者獲取SSL證書(crt格式)幢炸,并將該文件的格式轉換成cer格式:

  • 方式一:個人試過充岛,報錯了
$ cd /Users/thbdsz/Desktop/證書/
$ openssl x509 -in m2.crt -out zj.cer -outform der

unable to load certificate
140735677465544:error:0906D06C:PEM routines:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.50.2/libressl/crypto/pem/pem_lib.c:704:Expecting: TRUSTED CERTIFICATE
  • 方式二:雙擊該文件保檐,在 keychain (鑰匙串訪問)中找到該文件的證書,然后導出cer文件崔梗。注意夜只,完成后,在keychain中刪除該證書蒜魄。不然通過該電腦訪問與該證書相同域名的url時扔亥,都需要配置該證書。


    ssl證書.png

2谈为、AFN 3.0的訪問

注意旅挤,這里老的的版本(具體什么版本不知道)可以不配置 kApiBaseUrl ,但是新的版本必須配置伞鲫,并通過 kApiBaseUrl 創(chuàng)建 AFHTTPSessionManager 粘茄。

@interface NetManager : AFHTTPSessionManager

+ (instancetype)share;

@end

@implementation NetManager

+ (instancetype)share{
    static NetManager *manager;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        manager = [[self alloc] initWithBaseURL:[NSURL URLWithString:kApiBaseUrl] sessionConfiguration:configuration];
        [manager setSecurityPolicy:[self customSecurityPolicy]];
    });
    
    return manager;
}

+ (AFSecurityPolicy *)customSecurityPolicy {
    
    // 先導入證書 證書由服務端生成,具體由服務端人員操作
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"m2" ofType:@"cer"];//證書的路徑 xx.cer
    NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
    
    // AFSSLPinningModeCertificate 使用證書驗證模式
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    // allowInvalidCertificates 是否允許無效證書(也就是自建的證書)榔昔,默認為NO
    // 如果是需要驗證自建證書驹闰,需要設置為YES
    securityPolicy.allowInvalidCertificates = YES;
    
    //validatesDomainName 是否需要驗證域名,默認為YES;
    //假如證書的域名與你請求的域名不一致撒会,需把該項設置為NO嘹朗;如設成NO的話,即服務器使用其他可信任機構頒發(fā)的證書诵肛,也可以建立連接屹培,這個非常危險,建議打開怔檩。
    //置為NO褪秀,主要用于這種情況:客戶端請求的是子域名,而證書上的是另外一個域名薛训。因為SSL證書上的域名是獨立的媒吗,假如證書上注冊的域名是www.google.com,那么mail.google.com是無法驗證通過的乙埃;當然闸英,有錢可以注冊通配符的域名*.google.com锯岖,但這個還是比較貴的。
    //如置為NO甫何,建議自己添加對應域名的校驗邏輯出吹。
    securityPolicy.validatesDomainName = NO;
    
    securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerData, nil];
    return securityPolicy;
}
@end

3、info.plist辙喂,配置白名單

<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>cer文件中查看</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>
cer.png

不配置白名單捶牢,照樣出錯:

[BoringSSL] Function nw_protocol_boringssl_input_finished: line 1436 Peer disconnected during the middle of a handshake. Sending errSSLFatalAlert(-9802) alert
TIC TCP Conn Failed [1:0x608000361ec0]: 3:-9802 Err(-9802)
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
Task <B02837F8-D481-46BF-9A1B-2F76E68B1A04>.<1> HTTP load failed (error code: -1200 [3:-9802])
Task <B02837F8-D481-46BF-9A1B-2F76E68B1A04>.<1> finished with error - code: -1200
2018-06-01 16:15:07.873601+0800 Test[26837:1632515] Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made."
...等等信息

4、SDWebImage

使用下面方法即可巍耗。

[imv sd_setImageWithURL:[NSURL URLWithString:@"https://xxxxx:8080/img/upload/xxx.png"] placeholderImage:nil options:SDWebImageAllowInvalidSSLCertificates];

5秋麸、WKWebView

設置代理,并實現(xiàn)下面的方法芍锦。

_webView.navigationDelegate = self;

- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        NSURLCredential *card = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust];
        completionHandler(NSURLSessionAuthChallengeUseCredential,card);
    }
}

6竹勉、其他

如果項目中因為某些原因不全是https環(huán)境,例如分享功能娄琉,也需要添加白名單。
詳情可看mob上說的適配iOS9.0吓歇。
如果項目中還需要使用不知道域名為啥的http孽水,則修改info.plist

<key>NSAllowsArbitraryLoads</key>
<true/>
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市城看,隨后出現(xiàn)的幾起案子女气,更是在濱河造成了極大的恐慌,老刑警劉巖测柠,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炼鞠,死亡現(xiàn)場離奇詭異,居然都是意外死亡轰胁,警方通過查閱死者的電腦和手機谒主,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赃阀,“玉大人霎肯,你說我怎么就攤上這事¢凰梗” “怎么了观游?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長驮俗。 經(jīng)常有香客問我懂缕,道長,這世上最難降的妖魔是什么王凑? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任搪柑,我火速辦了婚禮吮蛹,結果婚禮上,老公的妹妹穿的比我還像新娘拌屏。我一直安慰自己潮针,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布倚喂。 她就那樣靜靜地躺著每篷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪端圈。 梳的紋絲不亂的頭發(fā)上焦读,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音舱权,去河邊找鬼矗晃。 笑死,一個胖子當著我的面吹牛宴倍,可吹牛的內(nèi)容都是我干的张症。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鸵贬,長吁一口氣:“原來是場噩夢啊……” “哼俗他!你這毒婦竟也來了?” 一聲冷哼從身側響起阔逼,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤兆衅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嗜浮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羡亩,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年危融,在試婚紗的時候發(fā)現(xiàn)自己被綠了畏铆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡专挪,死狀恐怖及志,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寨腔,我是刑警寧澤速侈,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站迫卢,受9級特大地震影響倚搬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乾蛤,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一每界、第九天 我趴在偏房一處隱蔽的房頂上張望捅僵。 院中可真熱鬧,春花似錦眨层、人聲如沸庙楚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馒闷。三九已至,卻和暖如春叁征,著一層夾襖步出監(jiān)牢的瞬間纳账,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工捺疼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疏虫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓啤呼,卻偏偏與公主長得像卧秘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子媳友,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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

  • 引言 所有iOS的開發(fā)者都應該知道斯议,2016年以來蘋果在不斷地收緊對于HTTP網(wǎng)絡連接的限制,強力推行全部使用HT...
    Cloudox_閱讀 1,671評論 1 2
  • 1.https簡單說明 HTTPS(全稱:Hyper Text Transfer Protocol over Se...
    舊時涼夢已成風閱讀 693評論 0 1
  • https://github.com/ChenYilong/iOS9AdaptationTips 配置方法 :ht...
    小楓123閱讀 7,609評論 2 6
  • 在iOS和Android完成開發(fā)坯临,發(fā)布App之后焊唬,有領導就提出了iOS的包比Android大很多的問題。 安裝文件...
    春暖花已開閱讀 7,468評論 0 15
  • 三十四周歲生日這天看靠,我在朋友圈發(fā)了微信赶促。收到很多祝福。最后看到三舅給我的祝福后挟炬,我居然哭了鸥滨。哭得眼淚鼻涕一把...
    飄忽若神閱讀 218評論 0 0