【问题标题】:SSL Pinning with AFNetworking 3 in Objective C?在 Objective C 中使用 AFNetworking 3 进行 SSL 固定?
【发布时间】:2018-09-18 11:54:50
【问题描述】:

我正在尝试使用 AFNetworking 3 库实现 SSL 固定。

我浏览了 AFSecurityPolicy 的文档,但没有使用 AFSSLPinningModePublicKey 获得任何有关 ssl 固定的信息。这是我正在使用的代码 sn-p

AFHTTPSessionManager * manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:url]];


AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
sessionManager.securityPolicy = securityPolicy;
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"my-certificate" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
sessionManager.securityPolicy.pinnedCertificates = @[certData];

输出:

在调试模式下运行时,我可以看到从捆绑包中提取的证书,然后

我收到错误:

错误:错误域=NSURLErrorDomain Code=-999 “已取消”

调查:

  1. validateCertificateChain : 参数不再存在 AFNetworking 中的 3+ 版本。 这是否意味着我必须 固定我的证书链的所有证书?

我可能错误地创建了我的证书 (.cer)。你能告诉我如何从 url 中提取 .cer 吗?

我在我的 mac 终端中使用了以下命令

echo "Get HTTP/1.0" | openssl s_client -showcerts -connect www.xxxx.xx:443 > mycertificateinpem.pem

openssl x509 -inform PEM -in mycertificateinpem.pem -outform DER -out my-certificate.cer

【问题讨论】:

    标签: objective-c openssl afnetworking afnetworking-3 certificate-pinning


    【解决方案1】:

    我们能够解决这个问题。我正在制作 afsecurity 政策的双重实例。这就是一个实例覆盖另一个实例的原因。

    请注意:AFNetworking 3.0 可用于固定中间证书。它不会验证整个链。 :)

    【讨论】:

    • 我得到相同的错误代码(-999),但我怀疑我正在制作两个实例。如何检查 AFNetworking 两个实例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多