AFNetworking为可信证书提供公钥

Pie*_*NAY 7 objective-c nsurlconnection afnetworking afnetworking-2

我使用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];
Run Code Online (Sandbox Code Playgroud)

现在我如何告诉AFNetworking使用该AFSSLPinningModePublicKey模式?
(我没看到setSSLPinningMode方法AFHTTPRequestOperation)

我如何告诉AFNetworking使用添加的密钥?我在文档中找不到任何示例.

Dav*_*unt 13

AFNetworking有一个AFSecurityPolicy对象具有安全功能的值,包括SSL固定模式.

您可以在AFHTTPRequestOperation上设置securityPolicy:

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
operation.securityPolicy = securityPolicy;
Run Code Online (Sandbox Code Playgroud)

您的证书必须具有扩展名cer不crt,应该是DER格式.将其添加到您的捆绑包中.您可以使用以下命令将其转换为终端中的正确格式:

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

您不应在应用包中包含密钥,只需要证书.

  • 通过使用`AFSSLPinningModePublicKey`固定模式,AFNetworking将从证书中提取公钥.然后,它将此公钥与服务器发送的证书中的密钥进行比较.这允许您在服务器上生成新证书,现有版本的应用程序将继续工作. (2认同)