我想在iOS應用程序中以編程方式創建證書。我能找到的最接近的API是SecCertificateCreateWithData,它需要DER編碼的二進制輸入。在iOS上使用SecCertificateCreateWithData創建證書
鑑於我有所需的所有數據作爲運行時對象可用,我如何構造DER編碼的二進制數據輸入?
我想在iOS應用程序中以編程方式創建證書。我能找到的最接近的API是SecCertificateCreateWithData,它需要DER編碼的二進制輸入。在iOS上使用SecCertificateCreateWithData創建證書
鑑於我有所需的所有數據作爲運行時對象可用,我如何構造DER編碼的二進制數據輸入?
這是如何可以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,但它幫助我實現了這個目標。
看看SecKeyGeneratePair我認爲這就是你要找的。
這不是問題的答案,應該是一個評論。 – 2016-09-10 22:43:10
嗨@lawick,您提議的解決方案是複製現有證書「myCertificate.cer」。我的問題是關於以編程方式創建證書,而不是複製現有證書。我有所有需要的細節(例如,鑰匙,用戶詳細信息等)。 – Jamil 2012-03-14 11:20:48
對不起,我誤解了你的問題。 DER數據已經是一個證書,所以** SecCertificateCreateWithData **方法不會幫助你做到這一點。請問爲什麼你想用iOS創建證書本身? – lawicko 2012-03-14 11:29:28
我需要每個用戶的證書。你認爲在應用程序中使用OpenSSL會更容易嗎? – Jamil 2012-03-14 11:44:06