Я изо всех сил пытаюсь найти способ создания x509 сертификатов программным способом (самоподписанный) в Objective-C с использованием Framework безопасности. Я НЕ использую OpenSSL для своего проекта. Поэтому я не могу использовать OpenSSL. Вот несколько вещей, которые я уже создал:Создание x509 сертификатов программно в Objective-C с использованием инфраструктуры безопасности
Создана пара ключей RSA. Подержанные
- (void)generateKeyPairPlease
function per Apple's docsИспользуется ios-csr (https://github.com/ateska/ios-csr) для создания CSR. См приведенный ниже код
SCCSR *sccsr = [[SCCSR alloc]init]; sccsr.commonName = @"some name"; sccsr.organizationName = @"some organisation"; NSData *certificateRequest = [sccsr build:pPublicKey privateKey:privateKey]; NSString *str = [certificateRequest base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; NSString *strCertificateRequest = @"-----BEGIN CERTIFICATE REQUEST-----\n"; strCertificateRequest = [strCertificateRequest stringByAppendingString:str]; strCertificateRequest = [strCertificateRequest stringByAppendingString:@"\n-----END CERTIFICATE REQUEST-----\n"];
Теперь мне нужно создать X509 сертификат (самоподписанный). Я использовал приведенный ниже код.
// Convert to Base64 data NSData *base64Data = [certificateRequest base64EncodedDataWithOptions:0]; SecCertificateRef cer = SecCertificateCreateWithData (NULL, (__bridge CFDataRef) base64Data); NSLog(@"%@", cer);
cer кажется NULL.
SecCertificateCreateWithData
нуждается в представлении сертификата X.509 «DER (выдающиеся правила кодирования)» согласно the documentation.
Является ли мой подход правильным? Повторить: у меня есть пара ключей RSA (общедоступные и закрытые ключи), успешно сгенерированная CSR (Request Signing Request). Теперь мне нужен сертификат X509, который будет сгенерирован программно.
Я использую версию 6.2 (6C131e) и SDK для iOS 8.2.
Действительно ли это OpneSSL устарел для iOS. Что произойдет, если я нажму приложение, использующее OpenSSL? – Ramis
@Ramis Я не уверен, но я считаю, что заголовки больше не включены в SDK, поэтому вы, возможно, не сможете добраться до приложения! –
Я знаю, что эта ветка устарела, но вы можете использовать OpenSSL - вам просто нужно управлять всем самостоятельно (компиляция библиотеки, включая заголовки). Apple говорит, что * они * не предоставляют поддержку OpenSSL больше в iOS/macOS; однако вы можете включать его, как и любую другую внешнюю библиотеку (libsodium и т. д.), и вам должно быть разрешено использовать эти приложения в AppStore. –