我正在使用AFNetworking进行SSL固定。我使用以下代码。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
[manager.securityPolicy setPinnedCertificates:myCertificate];
我的问题是,有没有办法在AFSecurityPolicy中设置公钥而不是证书?我们的证书偶尔会改变,我不想传递它.AFSecurityPolicy.h中没有setPublicKeys方法。 AFSecurityPolicy.m有一个属性pinnedPublicKeys
,但无法设置,因为它不在头文件中。
提前致谢。
答案 0 :(得分:3)
通过捆绑包中的.cer
文件自动从证书中提取密钥,或者手动设置pinnedCertificates
属性时。只要公钥未更改,即使旧证书已过期,较新的证书也会起作用。
请参阅the implementation of setPinnedCertificates:
(以及AFPublicKeyForCertificate
功能)。如果您不清楚它是如何工作的,我建议您在应用启动时设置一个断点并单步执行。