我正在使用 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/