我使用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
模式?
(我没有看到setSSLPinningMode
)
AFHTTPRequestOperation
方法
如何告诉AFNetworking使用添加的密钥?我在文档中找不到任何示例。
答案 0 :(得分:13)
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
您不应在应用包中包含密钥,只需要证书。
答案 1 :(得分:4)
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
/**** SSL Pinning ****/
AFSecurityPolicy *securityPolicy = [[self alloc] init];
securityPolicy.SSLPinningMode = AFSSLPinningModePublicKey;
[manager setSecurityPolicy:securityPolicy];
/**** SSL Pinning ****/
[manager GET:WEBSITE_URL parameters:params
success:^(AFHTTPRequestOperation *operation, NSDictionary* responseObject) {
//..... beautiful code here
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//..... beautiful code here
}];
希望这个帮助
检查链接here: 另请参阅AFNetworking Documents