XML RSA秘密鍵をPEMファイルに変換するという私の問題を解決しましたが、P12秘密鍵をインポートするときにnullデータを取得するという別の問題が発生します。以下は、私の手順です:P12ファイルへSecPKCS12Importで正しいp12ファイルをインポートする方法
変換のPEMファイル
openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts
読むのP12ファイル
NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:@"MyPrivateKey" ofType:@"p12"]; NSData *p12data = [NSData dataWithContentsOfFile:path]; if (![self getPrivateKeyRef]) RSAPrivateKey = getPrivateKeywithRawKey(p12data);
インポートP12のiOSプロジェクトへの秘密鍵
SecKeyRef getPrivateKeywithRawKey(NSData *pfxkeydata) { NSMutableDictionary * options = [[[NSMutableDictionary alloc] init] autorelease]; // Set the public key query dictionary //change to your .pfx password here [options setObject:@"MyPassword" forKey:(id)kSecImportExportPassphrase]; CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL); OSStatus securityError = SecPKCS12Import((CFDataRef) pfxkeydata, (CFDictionaryRef)options, &items); CFDictionaryRef identityDict = CFArrayGetValueAtIndex(items, 0); SecIdentityRef identityApp = (SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity); //NSLog(@"%@", securityError); assert(securityError == noErr); SecKeyRef privateKeyRef; SecIdentityCopyPrivateKey(identityApp, &privateKeyRef); return privateKeyRef; }
考えられるエラー(OSStatus値は0)はありませんでしたが、items配列はIDデータを取得しませんでした。私は間違ったOpenSSlの使用法のために正しいp12ファイル形式を取得しなかったのだろうかと思います。誰もp12ファイルを正常にインポートしましたか?私は数日の間この問題に立ち往生した、あなたが手がかりを持っている場合、私にアドバイスを与えてください、ありがとう!
ユベール
:1)入力されたキーは、あなたの入力証明書2として確実に同じではないでしょう)ドキュメントは-nocerts'はありませんが作成されます 'と言います出力時の証明書。あなたはそれなしで試しましたか? – MrTJ