Я хочу добавить некоторые сертификаты CA для проверки TLS в брелок моего приложения iOS 6. Сертификаты включены в пакет приложений. Я делаю не хочу добавить идентификатор (закрытый ключ/сертификат), который описан в нескольких примерах.SecPKCS12Import не возвращает никаких элементов
Звонок SecPKCS12Import
не возвращает никаких ошибок, но, к сожалению, он также не возвращает сертификат.
Для того, чтобы вы воспроизвести мои шаги, которые я взял Google промежуточный сертификат («Google Internet Authority») в качестве примера, и побежал следующие команды на загруженном сертификата PEM:
.
#convert PEM certificate to PKCS12
openssl pkcs12 -export -in google.pem -nokeys -out google.p12 -passout "pass:google"
#verification
openssl pkcs12 -in google.p12 -passin "pass:google"
MAC verified OK
Bag Attributes: <No Attributes>
subject=/C=US/O=Google Inc/CN=Google Internet Authority
issuer=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
-----BEGIN CERTIFICATE-----
MIICsDCCAhmgAwIBAgIDFXfhMA0GCSqGSIb3DQEBBQUAME4xCzAJBgNVBAYTAlVT
MRAwDgYDVQQKEwdFcXVpZmF4MS0wKwYDVQQLEyRFcXVpZmF4IFNlY3VyZSBDZXJ0
[...]
ARlIjNvrPq86fpVg0NOTawALkSqOUMl3MynBQO+spR7EHcRbADQ/JemfTEh2Ycfl
vZqhEFBfurZkX0eTANq98ZvVfpg=
-----END CERTIFICATE-----
После этого я в комплекте файл в моем приложении, где следующий код был выполнен: выходной результат
NSMutableDictionary * options = [[[NSMutableDictionary alloc] init] autorelease];
[options setObject:@"google" forKey:(id)kSecImportExportPassphrase];
CFArrayRef items = NULL;
NSData *certData = [NSData dataWithContentsOfFile:[NSBundle pathForResource:@"google" ofType:@"p12" inDirectory:[[NSBundle mainBundle] bundlePath]]];
OSStatus result = SecPKCS12Import((CFDataRef)certData, (CFDictionaryRef)options, &items);
assert(result == errSecSuccess);
CFIndex count = CFArrayGetCount(items);
NSLog(@"Certificates found: %ld",count);
Консоль «Сертификаты найдено: 0». Значение переменной certData заполняется правильным количеством байтов, и если я изменю предоставленный пароль, результаты будут изменены на errSecAuthFailed.
Вы не знаете, в чем проблема?
В моем случае сделал работу. Одно дело заметить, что кодовые фразы не равны. "google"! = "pass: google". – Ramis