2016-09-08 19 views
12

Tôi có khóa riêng ở p12 có cụm mật khẩu trống. Bây giờ khi tôi đang cố gắng nhập khóa riêng này bằng cách sử dụng SecPKCS12Import trên OS X hoặc iOS, tôi đã gặp lỗi (tương đương với các tác phẩm Windows).SecPKCS12Nhập khi p12 requries cụm mật khẩu trống

- (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); 

Tôi đã thử kết hợp khác nhau khi mật khẩu là rỗng:

  • optionsDictionary = NULL
  • optionsDictionary không có giá trị
  • optionsDictionary với @"" giá trị cho khóa kSecImportExportPassphrase

Nó luôn luôn kết thúc bằng securityError không bằng errSecSuccess. Tương ứng:

  • securityError=-25260 "Cụm mật khẩu là bắt buộc để nhập/xuất".
  • securityError=-25260 "Cụm mật khẩu là bắt buộc để nhập/xuất".
  • securityError=-25264 "xác minh MAC thất bại trong pkcs12 nhập khẩu (sai mật khẩu?)"

Bây giờ tôi Ok mà nó không hoạt động. Tôi cho rằng p12 không có mật khẩu là một mối đe dọa bảo mật, nhưng nếu đây là lý do tại sao nó không hoạt động, tôi cần một số tài liệu nêu rõ điều đó. Tôi đã cố gắng sử dụng Google mà không có may mắn cho đến nay.

Tôi cũng đã cố gắng nhập tệp này vào ứng dụng OS X Keychain với cùng một kết quả (mật khẩu không hợp lệ), vì vậy đây phải là sự cố với SecPKCS12Import.

Hoặc có thể có cách khắc phục sự cố này?

Trả lời

0

Tôi tin rằng đây là lỗi của SDK cacao, xem rdar://22909471.

Thật không may, radar này đã bị đóng như một bản dupe của một radar hiện có. Tôi sẽ gửi một báo cáo lỗi bổ sung với Apple để nâng cao vấn đề này. Tôi có thể nghĩ đến hai lựa chọn thay thế:

  1. Thêm mật khẩu p12 blob của bạn.

  2. Chuyển chứng chỉ sang mã hóa DER. This answer có thể hữu ích.

0

Điều này có vẻ như đã được khắc phục lúc này, tôi đã thử nghiệm trên iOS 10. Tôi có thể sử dụng chuỗi trống làm mật khẩu cho p12 của tôi. Tuy nhiên có vẻ như vẫn còn kSecImportExportPassphrase.

Các vấn đề liên quan