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をご覧ください。これはあなたが探しているものだと思います。
これは質問に対する回答ではなく、コメントであったはずです。 –
こんにちは@lawick、あなたが提案している解決策は、既存の証明書 "myCertificate.cer"をコピーすることです。私の質問は、既存のものをコピーするのではなく、プログラムで証明書を作成することです。必要な情報(キー、ユーザーの詳細など)はすべて持っています。 – Jamil
申し訳ありませんが、私はあなたの質問に誤解しました。 DERデータはすでに証明書であるため、** SecCertificateCreateWithData **メソッドはこれをサポートしません。なぜiOSで証明書自体を作成したいのですか? – lawicko
各ユーザーごとに証明書が必要です。あなたは、アプリケーション内でOpenSSLを使用して見て簡単になると思いますか? – Jamil