2012-02-16 33 views
14

Tôi đang cố gắng kết nối với máy chủ bằng cách sử dụng kho khóa được nhóm máy chủ cung cấp.Loại kho khóa .jks có hỗ trợ Android không?

khi gửi cuộc gọi dịch vụ cho máy chủ đầu tiên tôi tạo KeyStore Instance bằng cách sử dụng api sau

KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 

Nó trả lại loại keystore là “BKS”.

Kho lưu trữ mà nhóm máy chủ gửi là loại “.jks” (somename.jks) Vì vậy, tôi nhận được ngoại lệ “Phiên bản khóa chính sai”.

tôi đã cố gắng bằng cách đi qua “JKS” để getInstance() của KeyStore bằng cách làm theo cách

KeyStore keystore = KeyStore.getInstance("JKS");  

Nhưng ở đây tôi nhận được ngoại lệ “KeyStore JKS thực hiện không tìm thấy”.

Dưới đây là đoạn mã:

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 

InputStream instream = mContext.getAssets().open("somename.jks"); 

try { 
    trustStore.load(instream, "password".toCharArray()); 
} finally { 
    try { 
     instream.close(); 
    } catch(Exception ignore) { 
    } 
} 

hãy hướng dẫn cho tôi để giải quyết vấn đề này.

+0

"jks" dường như là mặc định. Nếu KeyStore này thuộc loại "jks", khóa phải được mã hóa phù hợp với chuẩn PKS # 8 dưới dạng EncryptedPrivateKeyInfo. được lấy từ đây http://developer.android.com/reference/java/security/KeyStore.html#getType() và http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html –

Trả lời

23

Tôi nghĩ hỗ trợ Android 'chỉ' BouncyCastle KeyStores (được gọi là BKS) ... Bạn vẫn có thể sử dụng Portecle

Để chuyển đổi nó từ JKS để BKS, nên làm việc như một say mê (ít nhất là nó làm việc cho tôi khi cố gắng lưu trữ .CRT của tôi sang một định dạng BKS;)

'chỉ' có nghĩa là, một cách dễ dàng ở đây: p, nếu không bạn sẽ phải vận dụng chất liệu

+1

Yup, JKS là định dạng độc quyền mặt trời/độc quyền và tôi đoán Google không cảm thấy như một vài vụ kiện phù phiếm. – Jens

+0

@Cehm những gì bạn nói là chính xác, android chỉ hỗ trợ BKS. Tôi đã nhận được kho khóa BKS từ nhóm máy chủ và nó hoạt động như sự quyến rũ với cùng một đoạn mã. – sankar

+0

có vẻ như android không hỗ trợ JKS .. cũng KeyStore.getDefaultType(); trả về "BKS" –

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