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

时间:2015-04-17 18:12:50

标签: 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,但无法设置,因为它不在头文件中。

提前致谢。

1 个答案:

答案 0 :(得分:3)

通过捆绑包中的.cer文件自动从证书中提取密钥,或者手动设置pinnedCertificates属性时。只要公钥未更改,即使旧证书已过期,较新的证书也会起作用。

请参阅the implementation of setPinnedCertificates:(以及AFPublicKeyForCertificate功能)。如果您不清楚它是如何工作的,我建议您在应用启动时设置一个断点并单步执行。