Ios SSL固定-在AFSecurityPolicy中设置固定公钥而不是固定证书
我正在使用AFNetworking进行SSL固定。我让它与以下代码一起工作Ios SSL固定-在AFSecurityPolicy中设置固定公钥而不是固定证书,ios,objective-c,ssl,afnetworking,afnetworking-2,Ios,Objective C,Ssl,Afnetworking,Afnetworking 2,我正在使用AFNetworking进行SSL固定。我让它与以下代码一起工作 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]; [manager.securityPolicy setPinnedCert
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
[manager.securityPolicy setPinnedCertificates:myCertificate];
我的问题是,有没有办法在AFSecurityPolicy中设置公钥而不是证书?我们的证书偶尔会换一次,我不想把它传给别人。AFSecurityPolicy.h中没有setPublicKeys方法。AFSecurityPolicy.m有一个属性pinnedPublicKeys
,但无法设置,因为它不在头文件中
提前感谢。密钥可以通过捆绑包中的
.cer
文件自动从证书中提取,也可以在手动设置pinnedCertificates
属性时提取。即使旧的证书已经过期,只要公钥不变,新的证书也可以工作
请参阅(以及
AFPublicKeyForceCertificate
功能)。如果你不清楚它是如何工作的,我建议设置一个断点并在应用程序启动时通过它。这是有道理的,我确实看到AFSecurityPolicy对我的证书所做的一切就是提取我的公钥,实际上我甚至可以用正确的公钥创建一个虚拟证书。