2010-05-21 49 views
13

Làm thế nào để đăng ký một gói ứng dụng với hơn một giấy chứng nhận, vì vậy mà tôi có thể làm điều này khi tôi xuất bản với Android Market:Cách ký APK với nhiều chứng chỉ?

Phiên bản 1.0 => Đăng nhập với Giấy chứng nhận Một
Phiên bản 2.0 => Đăng nhập với chứng chỉ A & B
Phiên bản 3.0 => Đăng nhập với chứng chỉ B

Android Market không cung cấp cho tôi một số hy vọng nhưng tôi không chắc chắn những gì để làm cho nó, khi tôi tải lên với một chứng chỉ dấu khác nhau nó mang lại cho tôi thông điệp này :

"Gói ứng dụng phải được ký với ít nhất một chứng chỉ chung với phiên bản trước đó".

Motive:
tôi đã xuất bản một ứng dụng trên thị trường sử dụng Công cụ Ký Android như một phần của Motodev Studio cho Android. Vấn đề là nó xử lý các khóa chính nó và không có cách nào (tài liệu) để có được chúng. Tôi muốn thay đổi nó để sử dụng kho khóa và chứng chỉ mà tôi có quyền kiểm soát nhiều hơn và có thể sử dụng ngay cả khi tôi không sử dụng MotoDev Studio nữa. Ngoài ra có vẻ như MotoDev Studio sẽ khóa bạn ra khỏi các tính năng mới như thư viện được chia sẻ.

CẬP NHẬT 5/3/2011:
Họ thực sự thực sự nhanh chóng và kịp thời khi cập nhật MotoDev Studio nhưng có vẻ như tôi tin rằng Google vẫn nên cung cấp công việc cho những người muốn thay đổi chứng chỉ các ứng dụng. Cập nhật ứng dụng cho tất cả sử dụng cùng một chứng chỉ, tạo các chứng chỉ mới theo thời gian và có thể tạo một chứng chỉ mới để bạn có thể giao hỗ trợ và phân phối ứng dụng của mình cho người khác.

Trả lời

12

Nếu bạn muốn ký APK nhiều lần, chỉ cần làm như vậy.
Nhưng lưu ý rằng Google Play không chấp nhận APK có nhiều chữ ký.

ví dụ: Bạn có thể sign an APK từ dòng lệnh sử dụng jarsigner như vậy:
jarsigner -keystore original-keystore my-app-unsigned.apk key-alias alias

Sau đó chỉ cần lặp lại điều này với phím thứ hai:
jarsigner -keystore new-signing-keystore my-app-unsigned.apk key-alias

Đừng quên để chạy zipalign sau:
zipalign -v 4 my-app-unsigned.apk my-app.apk


Tôi vừa đọc lại phần về studio MotoDev. Trong trường hợp đó, bạn chỉ có thể đăng ký APK trước bằng MotoDev như bình thường, sau đó đăng nhập bằng khóa mới của bạn trên dòng lệnh như trên.

+0

Ok tôi sẽ xem liệu Android Market có chấp nhận nó được gán với chứng chỉ cũ hay không, sau đó tải lên bản cập nhật mới chỉ với bản mới và xem nó có hoạt động hay không. Đó là những gì tôi đã suy nghĩ nhưng tôi mới ký mã nói chung và nó không một lần đề cập đến một cách để thay đổi giấy chứng nhận. – ddcruver

+0

Ít nhất là trong Tài liệu Android. – ddcruver

+2

Dường như làm việc tốt, điều này dường như là cách để thay đổi chứng chỉ trên một ứng dụng Android Market. – ddcruver

2

tôi đã có vấn đề ngày hôm nay và đây là những gì tôi đã làm:

  1. Sao lưu motodev.keystore cũ tập tin
  2. Sử dụng một studio Motodev gần đây (2.0.1) để thay đổi Motodev tôi.mật khẩu kho khóa (thay đổi nó trong chế độ xem motodev nơi bạn có thể nhập kho khóa)
  3. Chuyển đổi tệp kho khóa motodev (loại JCEKS) thành tệp kho khóa android thông thường (loại JKS) bằng cách sử dụng chương trình keytool.exe đi kèm với java:

keytool -importkeystore -srckeystore motodev.keystore -srckeystoretype JCEKS -destkeystore android.keystore -destkeystoretype JKS

Bây giờ tập tin android.keystore có thể được sử dụng trong các plugin Google Eclipse để xuất khẩu ứng dụng của bạn để một aPK được ký

+0

Trong jdk1.7.0_45, chúng đã thay đổi một số tên tham số. Bây giờ srcstorestype và deststoretype. –

3

tôi thật sự rất vui mừng nhận thấy bài này cho đến khi tôi nhìn thấy @ của ddcruver nhận xét (2010-06-05) và nhận xét của @cistearns (2011-03-01). Tuy nhiên, thực tế có một vấn đề bảo mật lớn với phương pháp chuyển đổi mà bạn mô tả (nếu nó hoạt động như bạn mong đợi), khiến cho kẻ tấn công không thể thay thế ứng dụng của bạn nếu họ có thể khiến người dùng của bạn cài đặt công cụ của họ:

  • bạn phát hành ứng dụng đã ký với giấy chứng nhận A.
  • Kẻ tấn công có được các gói ứng dụng, thêm dấu hiệu nó với giấy chứng nhận M, và phân phối các ứng dụng.
  • Kẻ tấn công sau đó có thể phát hành ứng dụng độc hại được ký bằng chứng chỉ M để thay thế ứng dụng của bạn và có quyền truy cập vào bất kỳ dữ liệu nào mà nó có thể đang lưu trữ.

Thông thường, nếu kẻ tấn công cố thay thế thứ gì đó, cài đặt sẽ từ chối trừ khi bản gốc bị xóa - tại thời điểm dữ liệu bị xóa.

Mặt khác, vẫn còn một số trường hợp sử dụng giá trị chuyển khóa/chứng chỉ: đổi mới quan trọng, bàn giao cho nhà phát triển khác vv

Điều này có thể được thực hiện một cách an toàn hơn bằng cách cho phép chuyển đổi sang một khóa mới từ khóa cũ. Vui lòng xem issue in the Android project.

+0

"Kẻ tấn công có được gói ứng dụng, thêm dấu hiệu cho nó bằng chứng chỉ M và phân phối ứng dụng". - dựa trên các nhận xét bạn đã trích dẫn, có vẻ như bị chặn bởi bảng điều khiển dành cho nhà phát triển. – CommonsWare

+0

Có chính xác. Vì nó đứng, nó không phải là một vấn đề an ninh. Tôi đang nói nếu nó/đã/có thể chuyển đổi một chìa khóa theo cách đó, sau đó nó/sẽ/là một vấn đề an ninh. –

+0

Cũng lưu ý rằng Google Play (và bảng điều khiển dành cho nhà phát triển) không phải là cách duy nhất để phân phối tệp APK. –

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