关于https,一些常用第三方的配置

2017-04-21  本文已影响37人  我有一只小毛驴_从来都不骑

对于HTTPS和HTTP的对比,就不再作讲解,因为网上有大量的对比,简单的来说,HTTPS相对于HTTP更安全,更安全的原因就来自于多出来这个S----SSL证书

https有单向认证和双向认证两种方式
//在单向认证时,前端不放证书,服务器去验证
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
    // 如果是需要服务端验证证书,需要设置为YES
    securityPolicy.allowInvalidCertificates = YES;
    //validatesDomainName 是否需要验证域名,默认为YES;
    securityPolicy.validatesDomainName = NO;
    //设置验证模式
    session.securityPolicy = securityPolicy;

在使用SDWebImage 加载图片的时候 需要加上后面的options:SDWebImageAllowInvalidSSLCertificates]如下

[image sd_setImageWithURL:[NSURL URLWithString:IMGURL(string)] placeholderImage:nil options:SDWebImageAllowInvalidSSLCertificates];

在单向认证中,这样也能加载出数据跟图片,但是程序在请求数据的时候就会打印

NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

这是因为后台配置SSL没有根证书,如果后台不给你解决这个问题,我们可以这样
在appdeleage.m中添加如下代码

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

这样就可以了
具体参考苹果官方文档
https://developer.apple.com/library/content/technotes/tn2232/_index.html#//apple_ref/doc/uid/DTS40012884-CH1-SECINTRODUCTION

目前我们公司是单向认证的,只研究了一下单向认证,双向认证的用到的时候再研究哈,不过应该不难

上一篇 下一篇

猜你喜欢

热点阅读