在ASIHTTPRequests上保留缓存的证书?

时间:2013-10-25 20:34:07

标签: ios objective-c ssl-certificate asihttprequest

我正在使用不同的p12证书对我的服务器进行两次调用。问题是,在第二次通话时,即使我为其分配了新证书,它也会使用第一次通话中的证书。

第一次呼叫(它下载我想用于第二次呼叫的第二个证书):

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request addRequestHeader:@"Content-Type" value:@"application/x-pkcs12"];
    [request setValidatesSecureCertificate:YES];
    [request setCachePolicy: ASIDoNotWriteToCacheCachePolicy | ASIDoNotReadFromCacheCachePolicy];
    [request setClientCertificateIdentity:[self copyClientCertificate]];
    [request setDownloadDestinationPath:thePath];
    [request setDelegate:self];
    [request setUseCookiePersistence:YES];
    [request startAsynchronous];
    [request setDidReceiveResponseHeadersSelector:@selector(didReceiveResponseHeaders:)];
    [request setDidFinishSelector:@selector(ConnectFinished:)];

在第二个电话:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
            [request setValidatesSecureCertificate:YES];
            [request setCachePolicy: ASIDoNotWriteToCacheCachePolicy | ASIDoNotReadFromCacheCachePolicy];
            [request setClientCertificateIdentity:[self copyClientCertificate2]];
            [request setCachePolicy:ASIDoNotReadFromCacheCachePolicy];
            [request setDelegate:self];
            [request setUseCookiePersistence:YES];
            [request startAsynchronous];
            [request setDidFinishSelector:@selector(ConnectFinished2:)];

但是,我可以在我的服务器中看到第二个调用正在使用第一个证书,即使它在 copyClientCertificate2 上获得了另一个证书。证书被缓存了吗?如何明确告诉第二个ASIHTTPRequest使用第二个证书?

注意:它是2个不同的URL,但是域名相同。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果可以,请尝试更改DNS设置,以便拥有两个不同的域。这应该可以解决你的缓存问题。

答案 1 :(得分:0)

你必须使用Matt Thompson的ASIHTTP unmaintained Library [[ASIDownloadCache sharedCache] removeCachedDataForURL:yourURLReference];

的这种方法