ASIHTTPRequest 信任自签名证书

关于ASIHTTPRequest如何信任自签名证书,长话短说,如下几步:
1、找到如图所示的文件

image.png

进入.m文件,找到initWithURL:方法,如下图所示,添加setCertificate(自定义方法,用来导入自签名证书的)。
image.png

2、setCertificate的具体实现,如下图:
image.png

具体代码如下:

+ (BOOL)extractIdentity:(SecIdentityRef *)outIdentity andTrust:(SecTrustRef*)outTrust fromPKCS12Data:(NSData *)inPKCS12Data
{
    OSStatus securityError = errSecSuccess;
    
    NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObject:@"ZJMC@EAM" forKey:(id)kSecImportExportPassphrase];
    
    CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
    securityError = SecPKCS12Import((CFDataRef)inPKCS12Data,(CFDictionaryRef)optionsDictionary,&items);
    
    if (securityError == 0) {
        CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex (items, 0);
        const void *tempIdentity = NULL;
        tempIdentity = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemIdentity);
        *outIdentity = (SecIdentityRef)tempIdentity;
        const void *tempTrust = NULL;
        tempTrust = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemTrust);
        *outTrust = (SecTrustRef)tempTrust;
    } else {
        NSLog(@"Failed with error code %d",(int)securityError);
        return NO;
    }
    return YES;
}

- (void)setCertificate {
    SecIdentityRef identity = NULL;
    SecTrustRef trust = NULL;
    NSData *PKCS12Data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"zj-server" ofType:@"p12"]];
    [ASIHTTPRequest extractIdentity:&identity andTrust:&trust fromPKCS12Data:PKCS12Data];
    [self setClientCertificateIdentity:identity];
}

3、说明:p12文件是自签名证书对应的一种格式,这里必须是p12类型的,文件来源于创建自签名证书的人员。

其它介绍
ASIHTTPRequest详细介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容