ios - SSL 固定 - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书

标签 ios objective-c ssl afnetworking afnetworking-2

我正在使用 AFNetworking 进行 SSL 固定。我用下面的代码让它工作。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
[manager.securityPolicy setPinnedCertificates:myCertificate];

我的问题是,有没有办法在 AFSecurityPolicy 中设置公钥而不是证书?我们的证书偶尔会更改,我不想将其传递进去。AFSecurityPolicy.h 中没有 setPublicKeys 方法。 AFSecurityPolicy.m 有一个属性 pinnedPublicKeys 但无法设置,因为它不在头文件中。

提前致谢。

最佳答案

key 是通过 bundle 中的 .cer 文件自动从证书中提取的,或者是在您手动设置 pinnedCertificates 属性时提取的。只要公钥未更改,即使旧证书已过期,新证书也将有效。

参见the implementation of setPinnedCertificates: (还有 AFPublicKeyForCertificate 函数)。如果您不清楚它是如何工作的,我建议您设置一个断点并在应用启动时单步执行它。

关于ios - SSL 固定 - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706575/

相关文章:

php - 在 PHP 中使用 Openssl 验证 SSL 证书

iOS:从 iPod 库获取和显示专辑插图

iOS : Inserting multiple rows in UITableview with insertRowsAtIndexPaths

android - 手机游戏SSL

ios - UIView 在 UIScrollview 中不移动

ios - 以编程方式使用自动布局将图像定位到 View 的中心

ruby-on-rails - ocsp 通过传递证书文本而不是文件来验证证书

iphone - 未找到 RestKit/RestKit.h 文件错误 - 版本 0.10.0

ios - VoiceOver 是否总是忽略宽度和高度为零的 iOS View ?

ios - Xcode 7、iOS 9 和 Swift 2.0 让 ViewController 的生命周期变得很奇怪