2010-07-16 38 views
8

Tôi có chứng chỉ máy chủ tự ký (cert.pem) và cần bật nó cho các ổ cắm SSL trong một ứng dụng Android. Lý tưởng nhất là tôi muốn đóng gói mã như tệp .jar và không cần tệp chứng chỉ bên ngoài (tức là bao gồm tệp đó vào mã).Làm cách nào để bật chứng chỉ tự ký cho các ổ cắm SSL trên Android?

Với mã này tôi có thể chấp nhận tất cả giấy chứng nhận, đó không phải là điều tôi muốn:

SSLContext sc = SSLContext.getInstance("TLS"); 
sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 

Tôi có cần phải thêm giấy chứng nhận để một KeyManager tùy chỉnh hoặc tùy chỉnh TrustManager?

Một vấn đề tôi đã gặp phải là Android không chấp nhận keystores JKS (KeyStore.getDefaultType() trả về "BKS"): " java.security.KeyStoreException: không tìm thấy KeyStore JKS thực hiện"

Bất kỳ ý tưởng làm thế nào để tiến hành sẽ được đánh giá cao!

Trả lời

13

Có, bạn cần thêm chứng chỉ vào kho khóa tùy chỉnh. Về cơ bản, quy trình gồm 4 bước:

  1. Nhận chứng chỉ máy chủ của bạn.
  2. Nhập chứng chỉ máy chủ vào kho khóa làm tài nguyên thô trong ứng dụng của bạn. Loại KeyStore phải là BKS.
  3. Tạo TrustManager của riêng bạn trong chương trình Java/Android để tải chứng chỉ vào SSLContext.
  4. Sử dụng SSLContext đó cho kết nối SSL của bạn.

Xem liên kết này để được hướng dẫn chi tiết và mẫu mã:
http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html

Chúc may mắn.
Nehc

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