我使用AFNetworking 2.3.1,我有一个值得信赖的证书,我想用它来固定公钥.
我有crt,key,pfx文件,所以我想我必须将它们添加到我的包中.
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responSEObject) { NSLog(@"Success"); } failure:^(AFHTTPRequestOperation *operation,NSError *error) { return [self processError:[operation response]]; }]; [operation start];
现在我如何告诉AFNetworking使用AFSSLPinningModePublicKey模式?
(我没有看到AFHTTPRequestOperation的setSSLPinningMode方法)
我如何告诉AFNetworking使用添加的密钥?我在文档中找不到任何示例.
解决方法
AFNetworking有一个AFSecurityPolicy对象具有安全功能的值,包括SSL固定模式.
您可以在AFHTTPRequestOperation上设置securityPolicy:
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]; operation.securityPolicy = securityPolicy;
您的证书必须具有扩展名cer而不是crt,并且应该是DER格式.将其添加到您的捆绑包中.您可以使用以下命令将其转换为终端中的正确格式:
openssl x509 -in domain.crt -out domain.cer -outform der
您不应在应用包中包含密钥,只需要证书.