有关https的苹果证书配置问题

你们的项目使用的是http还是https呢?如果使用 https,你们有遇到过请求中断的问题吗?说说我们使用https的血泪史!

https 除了设置App Transport Security Settings...(这都是小事,具体的自行百度)

最要命的是会发现请求中断,不多说,解决办法

解决这个呢需要移动端配合设置一些东西。服务器端会生成自签证书或者用苹果的CA证书,大多数还是会花钱买使用苹果的CA证书,当然也有不花钱的自签证书,无论哪种,移动端都要配合设置一下,具体操作:

1.先导入证书 证书由服务端生成,具体由服务端人员操作

2.在封装的网络请求里, 配置安全策略,上代码:

/**

 配置安全策略

 */

+ (AFSecurityPolicy *)configSecurityPolicy {

    // 先导入证书 证书由服务端生成,具体由服务端人员操作(直接把证书拖到工程文件里就行,不需要双击)

    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"证书名称" ofType:@"cer"]; //证书的路径

    NSData *cerData = [NSData dataWithContentsOfFile:cerPath];

    /*

     证书验证模式

     AFSSLPinningModeNone: 不验证

     AFSSLPinningModePublicKey: 公共秘钥验证模式

     AFSSLPinningModeCertificate: 证书验证模式

     */

    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];

    /*

     是否允许无效证书(也就是自建的证书),默认为NO

     如果是需要验证自建证书,需要设置为YES

     */

    securityPolicy.allowInvalidCertificates = YES;

    /*

     是否需要验证域名,默认为YES

     假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构颁发的证书,也可以建立连接,这个非常危险,建议打开。

     设置为NO,主要用于这种情况:客户端请求的是子域名,而证书上的是另外一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com,那么mail.google.com是无法验证通过的;当然,有钱可以注册通配符的域名*.google.com,但这个还是比较贵的。

     如置为NO,建议自己添加对应域名的校验逻辑。

   */

    securityPolicy.validatesDomainName = yes;(自签证书如果是局域网,好像不需要验证域名;CA证书,好像需要验证域名,自行尝试)

    // 设置证书

    securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerData, nil];


    return securityPolicy;

}


如果有意议,或者更好的提议,欢迎评论!!!

你可能感兴趣的:(有关https的苹果证书配置问题)