2012-03-14 121 views

回答

5

這是如何可以DOEN:

NSString* certPath = [[NSBundle mainBundle] pathForResource:@"myCertificate" ofType:@"cer"]; 
NSData* certData = [NSData dataWithContentsOfFile:certPath]; 
SecCertificateRef cert; 
if([certData length]) { 
    cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certData); 
    if(cert != NULL) { 
     CFStringRef certSummary = SecCertificateCopySubjectSummary(cert); 
     NSString* summaryString = [[NSString alloc] initWithString:(__bridge NSString*)certSummary]; 
     NSLog(@"CERT SUMMARY: %@", summaryString); 
     CFRelease(certSummary); 
    } else { 
     NSLog(@" *** ERROR *** trying to create the SSL certificate from data located at %@, but failed", certPath); 
    } 
} 
// play with cert here 

myCertificate.cer必須在你的應用程序包。我用openssl創建了cer文件。如果您打算在iOS應用程序中使用此功能,請確保您的證書包含所需的擴展名,請檢查here。儘管答案是-1,但它幫助我實現了這個目標。

+0

嗨@lawick,您提議的解決方案是複製現有證書「myCertificate.cer」。我的問題是關於以編程方式創建證書,而不是複製現有證書。我有所有需要的細節(例如,鑰匙,用戶詳細信息等)。 – Jamil 2012-03-14 11:20:48

+0

對不起,我誤解了你的問題。 DER數據已經是一個證書,所以** SecCertificateCreateWithData **方法不會幫助你做到這一點。請問爲什麼你想用iOS創建證書本身? – lawicko 2012-03-14 11:29:28

+0

我需要每個用戶的證書。你認爲在應用程序中使用OpenSSL會更容易嗎? – Jamil 2012-03-14 11:44:06

-1

看看SecKeyGeneratePair我認爲這就是你要找的。

+0

這不是問題的答案,應該是一個評論。 – 2016-09-10 22:43:10