美文网首页
AFNetworking 支持HTTPS

AFNetworking 支持HTTPS

作者: Counting_S | 来源:发表于2016-12-20 10:01 被阅读121次

    AFSecurityPolicy

    使用AFNetworking 进行 https请求核心是生成 AFSecurityPolicy 对象,并赋值给当前的SessionManager。

    + (AFSecurityPolicy *)customSecurityPolicy {
     NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"pacificcoffee_com_cn" ofType:@"cer"]; 
    NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate]; 
    securityPolicy.allowInvalidCertificates = YES; 
    securityPolicy.validatesDomainName = NO; 
    [securityPolicy setPinnedCertificates:@[cerData]]; 
    return securityPolicy;
    }
    

    关于cer文件

    一般情况下服务端的SSL证书为crt格式,而mac端使用的证书则为cer格式。这种情况可以使用 Terminal 转换一下格式即可。
    在终端进入证书目录,输入一下指令

    openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der
    

    然后就可以输出一个cer证书,使用的时候直接将cer证书拖入到工程中并确定cer文件已经被添加到Bundle Resource中。

    allowInvalidCertificates

    默认为NO,如果你的证书是不被信任的,即自建证书,那么需要设置为YES,AFNetworking才会进行证书验证

    validatesDomainName

    很多时候一个SSL证书下回分出两个域名,即一个生产环境和一个测试环境,这就会到时证书中的域名和实际请求的域名可能会不一致,这样就可以将validatesDomainName属性设置为NO来避免。


    PS

    通过这个网址可以简单判断一下你的域名是否支持HTTPS通信

    相关文章

      网友评论

          本文标题:AFNetworking 支持HTTPS

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