美文网首页
关于https,一些常用第三方的配置

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

作者: 我有一只小毛驴_从来都不骑 | 来源:发表于2017-04-21 11:51 被阅读37次

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

    https有单向认证和双向认证两种方式
    • 单向认证
      只要求服务端部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证,客户端不需要进行任何操作,更加灵活,而且这个SSL证书是有过期时间的,如果过期了,只需要服务器端修改证书即可,不会出现突然有一天莫名其妙app打不开了的问题。
      在使用AFN请求数据的时候 需要如下配置
    //在单向认证时,前端不放证书,服务器去验证
        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

    • 双向认证
      需要是服务端需要客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些,开发成本也就高了

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

    相关文章

      网友评论

          本文标题:关于https,一些常用第三方的配置

          本文链接:https://www.haomeiwen.com/subject/gjhdzttx.html