【问题标题】:SSL Pinning with AFNetworking 2.0 allowing POST requests regardless of cert file usedAFNetworking 2.0 的 SSL 固定允许 POST 请求,无论使用什么证书文件
【发布时间】:2014-09-17 19:05:11
【问题描述】:

我们使用 DigiCert 作为我们的 CA。我们使用以下命令制作了 .cer 文件:

openssl x509 -in WEBSITE.crt -outform der -out WEBSITE.cer 

应该可以工作,但问题是不仅 cer 可以工作,而且我们放入代码中的任何文件都可以工作。我们甚至测试了空白 .cer 文件,并且效果也很好。通过工作,我的意思是无论使用什么 .cer 文件,我们都可以向服务器发出 post 请求。显然,如果使用我们签名的证书以外的其他东西,我们希望它失败。

我们的来源设置在 Cloudflare,然后路由到安装了我们的证书的 Amazon 负载均衡器。

我自己使用 Charles Proxy 进行 MITM,我可以在 iOS 应用中使用或不使用证书。

我们正在使用最新版本的AFNetworking 进行 SSL 固定。我将AFHTTPRequestOperationManager 子类化并添加了以下方法:

+ (AFSecurityPolicy*) siteSecurityPolicy
{
    /**** SSL Pinning ****/
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"WEBSITE" ofType:@"cer"];
    NSData *certData = [NSData dataWithContentsOfFile:cerPath];
    AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
    [securityPolicy setAllowInvalidCertificates:NO];
    [securityPolicy setPinnedCertificates:@[certData]];
    [securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];
   /**** SSL Pinning ****/

    return securityPolicy;
}

我发帖的代码如下:

websiteRequestOperationManager *manager = [websiteRequestOperationManager manager];

/**** SSL Pinning ****/
[manager setSecurityPolicy:[websiteRequestOperationManager siteSecurityPolicy]];
/**** SSL Pinning ****/

[manager GET:WEBSITE_URL parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary* responseObject) {
    //code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    //code
}];

我们错过了哪些关键步骤?

我还应该提到我 NSLog'd:

[manager.securityPolicy.pinnedCertificates count]

并获得 1 分。

【问题讨论】:

  • 您的目标(使用任何证书发布)不是有效地破坏固定吗?在我看来,您只想在连接上使用一个真正的证书或公钥。这是关于AFNetworking 和固定的过去问题之一:AFNetworking pin public key for a trusted certificate
  • 对不起,我想我需要重新表述我的问题。目标是仅使用我们签名的证书。发生的事情是我们使用什么证书文件并不重要,它允许发布。因此,将服务器的证书与应用程序中的证书匹配的过程不会发生。
  • 在哪里下载 Cloudflare 的 *.cer.pem 文件?

标签: ios cocoa-touch ssl ios7 afnetworking


【解决方案1】:

我似乎也是这种情况,使用 AFNetworking 2.3.1。 AFNetworking 2.1.0 没有这个问题,但是在 iOS 8 beta 5 上固定在那里中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多