【问题标题】:SSL Pinning using AFNetworking in iOS not working在 iOS 中使用 AFNetworking 进行 SSL 固定不起作用
【发布时间】:2018-04-15 02:17:59
【问题描述】:

我正在使用 AFnetworking。我的应用程序网络服务器在 TLS 1.2 中。我想将证书固定添加到我的 iOS 应用程序。我的代码如下:

       AFHTTPSessionManager *manager=[[AFHTTPSessionManager manager] initWithBaseURL:serviceURL];

    NSSet *certificates = [AFSecurityPolicy certificatesInBundle:[NSBundle mainBundle]];
    AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:certificates];
    policy.validatesDomainName = YES;
    policy.allowInvalidCertificates = YES;
    opManager.securityPolicy = policy;

我的捆绑包中有有效的服务器证书,并且使用此代码,Web 服务工作正常。但是,当我尝试使用不正确的示例证书进行相同操作时,网络服务也在工作。我什至尝试在捆绑中没有证书,那个时候网络服务也工作正常。谁能解释一下? AppTransportSecurity 在我的应用中打开。

    <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
</dict>

【问题讨论】:

    标签: ios iphone ssl app-transport-security certificate-pinning


    【解决方案1】:

    我找到了解决此问题的方法。请在下面找到我用来替换现有代码的代码。它按预期工作。

            AFHTTPSessionManager *opManager=[[AFHTTPSessionManager manager] initWithBaseURL:baseUrl];
        opManager.requestSerializer = [AFHTTPRequestSerializer serializer];
        opManager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
        // SSL Pinning
        NSString *certificatePath = [[NSBundle mainBundle] pathForResource:@"xxxxxxxx.com" ofType:@"der"];
        NSData *certificateData = [NSData dataWithContentsOfFile:certificatePath];
    
        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
        [securityPolicy setAllowInvalidCertificates:YES];
        [securityPolicy setPinnedCertificates:@[certificateData]];
        [opManager setSecurityPolicy:securityPolicy];
    

    【讨论】:

    • 我试过上面的代码。但这对我不起作用。我的自定义类是 AFHTTPSessionManager 的子类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多