【问题标题】:Create .PEM file with objective-c and OpenSSL使用 Objective-c 和 OpenSSL 创建 .PEM 文件
【发布时间】:2021-06-25 22:29:29
【问题描述】:

我试图在 Objective-C 或 Swift 中实现以下命令行。

openssl x509 -req -in 20060.csr -CA root.pem -CAkey root.key -CAcreateserial -out 20060.pem -days 825 -sha256

我已经编译并构建了我的iOS项目的openssl,并成功创建了带有一些KeyChain函数的20060.csr文件。我已经有了 root.pem 和 root.key 文件。

如何在 Objc 中以编程方式实现这一点?

【问题讨论】:

标签: ios swift objective-c security openssl


【解决方案1】:

用于创建 PEM 文件的代码 (CertificateSigningRequest.pem)。

- (void)createPemFileWithCertificateSigningRequest:(X509_REQ *)certSigningRequest {
    //delete existing PEM file if there is one
    [self deletePemFile];

    //create empty PEM file
    NSString *pemFilePath = [self pemFilePath];
    if (![[NSFileManager defaultManager] createFileAtPath:pemFilePath contents:nil attributes:nil]) {
        NSLog(@"Error creating file for PEM");
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error creating file for PEM" message:[NSString stringWithFormat:@"Could not create file at the following location:\n\n%@", pemFilePath] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
        return;
    }

    //get a FILE struct for the PEM file
    NSFileHandle *outputFileHandle = [NSFileHandle fileHandleForWritingAtPath:pemFilePath];
    FILE *pemFile = fdopen([outputFileHandle fileDescriptor], "w");

    //write the CSR to the PEM file
    PEM_write_X509_REQ(pemFile, certSigningRequest);
    //close the file
    fclose(pemFile);
}

- (NSString *)pemFilePath {
    NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return [documentsFolder stringByAppendingPathComponent:@"CertificateSigningRequest.pem"];
}

【讨论】:

    猜你喜欢
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多