鍍金池/ 問答/iOS/ 自己做的https證書 在iOS上請求https 報錯 怎么能越過SSL證書驗證

自己做的https證書 在iOS上請求https 報錯 怎么能越過SSL證書驗證

報錯為 NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
還有這個錯誤 CFNetwork SSLHandshake failed (-9824)
代碼如下

  NSURL *url = [NSURL URLWithString:@"https://booking.cn.fcm.travel/img/200049324/144799957714318319/20151120140610983315.png"];
    
  UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

  UIImageView *image1 = [[UIImageView alloc] init];
  image1.frame= CGRectMake(10, 10, 100, 100);
  image1.image=image;
    
  [self.view addSubview:image1];

下面的操作是不管用的
info.plist加上這一段,右鍵 info.plist -> open as -> source code
用代碼加

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
回答
編輯回答
乖乖噠

1.自簽名證書不被信任,可以實現(xiàn)conection代理,忽略證書,實現(xiàn)比較麻煩
2.你的服務(wù)器,應(yīng)該是設(shè)置了只支持https請求,可以設(shè)置同時支持兩個協(xié)議

如果是自建證書,沒有經(jīng)過權(quán)威機構(gòu)認(rèn)證的證書,那么需要將NSAllowsArbitraryLoads設(shè)置為YES才能通過。NSAllowsArbitraryLoads為YES,以前的HTTP請求也能通過。->現(xiàn)在是沒有http協(xié)議的請求
2018年2月10日 15:56
編輯回答
綰青絲

圖片描述

升級xcode7.1試試看,有個選項YES。。。。

2018年1月8日 05:23
編輯回答
故人嘆

AppDelegate.m

@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}
@end

如果是 XCODE 7 以上的版本需要 plist 需要加上

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
2017年10月25日 06:23
編輯回答
糖果果

買一個SSL證書。自定義的是不會通過的,參考萬惡的12306.
目前沃通的免費SSL無法通過Android和IOS的認(rèn)證。
用付費的吧,用最便宜的RapidSSL就行了。一年幾十塊。

2018年1月6日 03:11
編輯回答
九年囚

注意蘋果會不定期更新受信CA廠商列表,最新的IOS11信任的CA證書廠商參考蘋果官網(wǎng)通行:https://support.apple.com/zh-...。顯然部分免費的SSL已經(jīng)不受信任了,所以在未來開發(fā)時盡量避免尋求免費證書,避免蘋果方面因證書問題給app帶來的損失
參考DigiCert、Symantec、GeoTrust 、Thawte、Comodo、RapidSSL、Certum等多種品牌證書均在蘋果的信任列表中,由低到高最低¥39元PositiveSSL和30天免費試用的RapidSSL,詳情參考價目表:
https://www.infinisign.com/pr...

2017年5月26日 23:58
編輯回答
伐木累

若若問樓主,這個問題解決了么?訪問自建證書報SSL錯誤。

2018年9月12日 19:54