• <ul id="cgeq2"></ul>
  • 歡迎您光臨深圳塔燈網絡科技有限公司!
    電話圖標 余先生:13699882642

    網站百科

    為您解碼網站建設的點點滴滴

    https ssl加密

    發表日期:2018-03 文章編輯:小燈 瀏覽次數:2497

    AFNetworking 單向校驗證書

    + (AFSecurityPolicy*)customPrivateSecurityPolicy?{

    ? ? // 先導入證書

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

    ? ? NSData *certData = [NSData dataWithContentsOfFile:cerPath];

    ?? // AFSSLPinningModeCertificate 使用證書驗證模式

    ? ? AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

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

    ? ? // 如果是需要驗證自建證書,需要設置為YES

    ?? ?securityPolicy.allowInvalidCertificates = YES;

    ? ? //validatesDomainName 是否需要驗證域名,默認為YES;

    ? ? //假如證書的域名與你請求的域名不一致,需把該項設置為NO;如設成NO的話,即服務器使用其他可信任機構頒發的證書,也可以建立連接,這個非常危險,建議打開。

    ? ? //置為NO,主要用于這種情況:客戶端請求的是子域名,而證書上的是另外一個域名。因為SSL證書上的域名是獨立的,假如證書上注冊的域名是www.google.com,那么mail.google.com是無法驗證通過的;當然,有錢可以注冊通配符的域名*.google.com,但這個還是比較貴的。

    ? ? //如置為NO,建議自己添加對應域名的校驗邏輯。

    ? ? securityPolicy.validatesDomainName = NO;

    ?? ?securityPolicy.pinnedCertificates = @[certData];

    ? ? return securityPolicy;

    }

    測試:

    ?1.獲得請求管理者

    AFHTTPRequestOperationManager *manage = [AFHTTPRequestOperationManager manager];

    2.返回結果類型:

    manage.responseSerializer = [AFHTTPResponseSerializer serializer];

    ?3. 加上這行代碼,https ssl 驗證。

    ?[manage setSecurityPolicy:[self customPrivateSecurityPolicy]];

    重點在于處理NSURLConnection的didReceiveAuthenticationChallenge代理方法,對CA文件進行驗證,并建立信任連接。//https 證書驗證

    - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)prote {

    ? ? ///NO 系統進行管理? YES 調用connection: didReceiveAuthenticationChallenge 進行驗證

    ? ? return YES;

    }

    //?NSURLConnection?手動驗證 https 證書

    - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {

    ? ? // 獲取der格式CA證書路徑

    ? ? NSString *certPath = [[NSBundle mainBundle] ?pathForResource:@"CustomCA" ofType:@"der"];

    ? ? // 提取二進制內容

    ?? ?NSData *derCA = [NSData dataWithContentsOfFile:certPath];

    ? ? // 根據二進制內容提取證書信息

    ? ? SecCertificateRef caRef = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)derCA);

    ? ? // 形成鑰匙鏈

    ? ? NSArray * chain = [NSArray arrayWithObject:(__bridge id)(caRef)];

    ? ? CFArrayRef caChainArrayRef = CFBridgingRetain(chain);

    ? ? // 取出服務器證書

    ? ? SecTrustRef trust = [[challenge protectionSpace] serverTrust];

    ? ? SecTrustResultType trustResult = kSecTrustResultInvalid;

    ? ? // 設置為我們自有的CA證書鑰匙連

    ? ? int err = SecTrustSetAnchorCertificates(trust, caChainArrayRef);

    ? ? if (err == noErr) {

    ? ? ? ? // 用CA證書驗證服務器證書

    ? ? ? ? err = SecTrustEvaluate(trust, &trustResult);

    ? ? }

    ? ? // 檢查結果 kSecTrustResultConfirm 當值是這個時應詢問用戶許可,但這個值在iOS7.0后廢棄了,系統支持到7.0 可以不管理這個值

    ? ? BOOL trusted = (err == noErr) && ((trustResult == kSecTrustResultProceed) || (trustResult == kSecTrustResultUnspecified));

    #warning 使用根證書驗證存在服務器證書如果不是我們使用的GlobalSignRootCA簽發的這個子證書簽發的(另一個子證書簽發)也能校驗過

    ? ? if (trusted) {

    ? ? ? ? [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];

    ? ? } else {

    ? ? ? ? //驗證證書不通過

    ? ? ? ? //當執行到這的時候應該去排查一下具體為什么沒過,可以看一下是否換證書了,是否是用GlobalSignRootCA或其直接簽發的子證書簽發的

    ? ? ? ? //現在的驗證的全部是這個機構簽發的證書。這個機構換證書的幾率很小,因為驗證書是用根證書驗的,簽發機構要換 就要把所有證書換掉 一般不會這么做,

    ? ? ? ? [challenge.sender cancelAuthenticationChallenge:challenge];

    ? ? }

    }


    本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.juherenli.com/20373.html
    相關開發語言
     八年  行業經驗

    多一份參考,總有益處

    聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

    咨詢相關問題或預約面談,可以通過以下方式與我們聯系

    業務熱線:余經理:13699882642

    Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

    99久久人妻精品免费一区| 亚洲国产综合精品一区在线播放 | 四虎精品亚洲一区二区三区| 久久99国产这里有精品视| 亚洲国产精品综合久久一线| 亚洲乱码一区二区三区国产精品| 国产精品亚洲片在线观看不卡| 国产视频精品视频| 久クク成人精品中文字幕| 亚洲精品午夜无码专区| 国产九九久久99精品影院| 亚洲日本久久久午夜精品| 久久免费观看国产精品| 久久国产精品偷99| 国产成人精品免费视频软件| 2021国产精品视频| 无码人妻精品中文字幕免费| 精品少妇一区二区三区在线| 尤物精品视频一区二区三区| 国产精品久久久久久久久| 久久亚洲精品国产精品黑人| 久久精品国产清自在天天线| 国产真实乱子伦精品视频| 国产99视频精品免费观看7| 精品人妻人人做人人爽| 久久精品人人槡人妻人人玩| 国产香蕉国产精品偷在线观看| 国产伦精品一区二区三区视频小说| 亚洲精品无码少妇30P| 亚洲精品电影天堂网| 亚洲国语精品自产拍在线观看| 亚洲精品自产拍在线观看| 久久久久久极精品久久久| 国产精品青草久久久久福利99| 国产精品情侣自拍| 香蕉久久夜色精品国产| 日韩国产精品亚洲а∨天堂免| 色综合久久精品中文字幕首页| 91精品成人免费国产片| 久久精品国产亚洲AV香蕉| 99热精品国产三级在线观看|