Pinning SSL con AFNetworking 2.0 que permite requestes POST independientemente del file cert utilizado

Estamos utilizando DigiCert como nuestra CA. Hemos realizado el file .cer con el siguiente command:

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

que DEBE funcionar, pero el problema es que no solo funcionará ese CER sino cualquier file que coloquemos en el código funcionará. Incluso hemos probado los files .cer en blanco y eso también funciona. Por trabajo me refiero a que podemos realizar una request de publicación en el server independientemente de qué file .cer se utilice. Obviamente, nos gustaría que fallase si se usa algo distinto a nuestro certificate firmado.

Nuestro origen se establece en Cloudflare, que luego se dirige a un equilibrador de carga de Amazon que tiene nuestros certificates instalados en él.

Estoy usando Charles Proxy para MITM y puedo hacerlo con o sin la certificación en la aplicación iOS.

Estamos utilizando la última versión de AFNetworking para realizar la fijación de SSL. Subclass AFHTTPRequestOperationManager y agregué el siguiente método:

 + (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; } 

Mi código para hacer la publicación es el siguiente:

 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 }]; 

¿Qué paso crítico nos hemos perdido?

También debería mencionar que NSLog'd:

 [manager.securityPolicy.pinnedCertificates count] 

y recibió un 1.

Este parece ser el caso para mí también, usando AFNetworking 2.3.1. AFNetworking 2.1.0 no tiene este problema, sin embargo, el locking se rompe en iOS 8 beta 5.