2016-09-08 25 views
12

パスフレーズセットが空のp12に秘密鍵があります。 OS XまたはiOSでSecPKCS12Importを使用してこの秘密鍵をインポートしようとすると、エラーが発生します(Windowsの場合と同じ)。無価値 SecPKCS12 p12が空のパスフレーズを要求するときのインポート

  • optionsDictionary

    • optionsDictionary = NULL
    • optionsDictionary@""値とキーkSecImportExportPassphrase

    のためにそれは常に:パスワードが空のとき、私はさまざまな組み合わせを試してみた

    - (NSError *)setClientIdentityCertificateFromPKCS12Data: (NSData *)PKCS12Data withPassword: (NSString *)password 
    { 
        OSStatus securityError = errSecSuccess; 
    
        const void *keys[] = { kSecImportExportPassphrase }; 
        const void *values[] = { (__bridge CFStringRef)password }; 
        CFDictionaryRef optionsDictionary = NULL; 
    
        optionsDictionary = CFDictionaryCreate(
                  NULL, keys, 
                  values, (password?1:0), 
                  NULL, NULL); 
        CFArrayRef items = NULL; 
    
        securityError = SecPKCS12Import((__bridge CFDataRef)PKCS12Data, 
                optionsDictionary, 
                &items); 
    

    〜で終わるsecurityErrorerrSecSuccessと等しくない。それぞれ:

    • securityError=-25260 "インポート/エクスポートにはパスフレーズが必要です。"
    • securityError=-25260 "インポート/エクスポートにはパスフレーズが必要です。"
    • securityError=-25264 "MAC検証がPKCS12インポート中に失敗した(間違ったパスワード?)"

    今、私はそれが動作しないことを[OK]をです。私は、パスワードなしでp12がセキュリティ上の脅威であることを理解していますが、これがうまくいかない理由であれば、私はそれを述べる文書が必要です。 私は今まで運がなかったことをGoogleに試みました。

    このファイルを同じ結果(無効なパスワード)でOS X Keychainアプリケーションにインポートしようとしましたので、これはSecPKCS12Importの問題である必要があります。

    また、この問題を解決する方法がありますか?

  • 答えて

    0

    私はこれがCocoa SDKの欠陥であると信じています。rdar://22909471を参照してください。

    残念ながら、このレーダーは既存のレーダーの房として閉じられています。この問題を解決するためにAppleに追加のバグレポートを提出します。私は2つの選択肢が考えられます:

    1. パスワードをあなたのp12ブロブに追加してください。

    2. 証明書をDERエンコーディングに変換します。 This answerが役に立ちます。

    0

    これは今修正されているようですが、私はiOS 10でテストしました。私はp12のパスワードとして空の文字列を使用できます。しかし、依然としてkSecImportExportPassphraseが必要なようです。

    関連する問題