自己做的https证书 在iOS上请求https 报错 怎么能越过SSL证书验证
黄舟
黄舟 2017-04-17 17:09:21
[iOS讨论组]

报错为 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>
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(5)
PHP中文网

买一个SSL证书。自定义的是不会通过的,参考万恶的12306.
目前沃通的免费SSL无法通过Android和IOS的认证。
用付费的吧,用最便宜的RapidSSL就行了。一年几十块。

PHPz

升级xcode7.1试试看,有个选项YES。。。。

PHP中文网

AppDelegate.m

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

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

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
ringa_lee

1.自签名证书不被信任,可以实现conection代理,忽略证书,实现比较麻烦
2.你的服务器,应该是设置了只支持https请求,可以设置同时支持两个协议

如果是自建证书,没有经过权威机构认证的证书,那么需要将NSAllowsArbitraryLoads设置为YES才能通过。NSAllowsArbitraryLoads为YES,以前的HTTP请求也能通过。->现在是没有http协议的请求
高洛峰

你可以将自签名SSL证书替换成受浏览器信任的免费SSL证书,如startssl,沃通免费SSL,let us encrypt

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号