2011-07-27 32 views
100

Đây là một câu hỏi chung, nhưng đặc biệt là tôi quan tâm đến việc sử dụng nó cho Android. Tệp kho khóa là gì và tệp được sử dụng để làm gì?Tệp kho khóa Android là gì và nó được sử dụng để làm gì?

Nhiều ứng dụng Android có thể sử dụng cùng một kho khóa để đăng ký ứng dụng của chúng (nghĩa là "ký" một .apk?) Và các tác động (nếu có) là gì?

+0

Dường như bạn đang tạo hai chủ đề. Đầu tiên là kho khóa và thứ hai là ký APK. Ngoài ra, hãy xem [Nội dung an ninh Android của Nikolay Elenkov: Hướng dẫn chi tiết về Kiến trúc bảo mật của Android] (https://www.amazon.com/dp/1593275811). – jww

Trả lời

105

Câu trả lời tôi cung cấp là tệp kho khóa là để tự xác thực với bất kỳ ai đang yêu cầu. Nó không bị giới hạn chỉ để ký các tệp .apk, bạn có thể sử dụng nó để lưu trữ chứng chỉ cá nhân, ký dữ liệu được truyền đi và toàn bộ xác thực khác nhau.

Xét về những gì bạn làm với ứng dụng này cho Android và có thể là những gì bạn đang tìm kiếm vì bạn đề cập đến ký APK, đó là chứng chỉ của bạn. Bạn đang xây dựng thương hiệu cho ứng dụng của bạn bằng thông tin đăng nhập của bạn. Bạn có thể thương hiệu nhiều ứng dụng với cùng một khóa, trên thực tế, bạn nên sử dụng một chứng chỉ để thương hiệu nhiều ứng dụng mà bạn viết. Nó dễ dàng hơn để theo dõi những ứng dụng thuộc về bạn.

Tôi không chắc chắn ý của bạn là gì. Tôi cho rằng điều đó có nghĩa là không ai nhưng người nắm giữ chứng chỉ của bạn có thể cập nhật ứng dụng của bạn. Điều đó có nghĩa rằng nếu bạn phát hành nó vào tự nhiên, mất cert bạn đã sử dụng để ký ứng dụng, sau đó bạn không thể phát hành bản cập nhật để giữ cho cert đó an toàn và sao lưu nếu cần thiết.

Nhưng ngoài việc ký apks để phát hành vào tự nhiên, bạn có thể sử dụng nó để xác thực thiết bị của bạn đến một máy chủ qua SSL nếu bạn muốn, (cũng Android liên quan) trong số các chức năng khác.

+26

tôi yêu cụm từ của bạn "phát hành vào tự nhiên" – bluezald

+2

Câu trả lời rất hay. Cũng nên lưu ý ở đây rằng bạn cần một tệp kho khóa nếu bạn định sử dụng "dữ liệu đẩy" trong ứng dụng của mình! – KapteinMarshall

+0

Máy Keystore có cụ thể không? Hoặc chúng ta có thể sử dụng nó trong bất kỳ máy nào để cập nhật ứng dụng của chúng ta ?? – Yawar

0

toàn bộ ý tưởng về công cụ khóa là ký vào gói ứng dụng của bạn với số nhận dạng duy nhất chuyển tiếp nguồn của gói ứng dụng đó đến. một tệp kho khóa (từ những gì tôi hiểu) được sử dụng để gỡ lỗi để gói ứng dụng của bạn có chức năng của một công cụ khóa mà không cần ký APK của bạn để sản xuất. Vì vậy, có, cho mục đích gỡ lỗi, bạn sẽ có thể đăng nhập nhiều apk với một kho khóa duy nhất, nhưng hiểu khi đẩy vào sản xuất youl cần keytools độc đáo làm mã định danh cho mỗi gói ứng dụng

+0

Bạn không cần ký ứng dụng để gỡ lỗi ứng dụng, trong trình mô phỏng hoặc trên thiết bị thực tế. – Marcus

+0

Tôi không có nghĩa là bạn phải ký nó để gỡ lỗi nó ... nhưng bạn có thể sử dụng kho khóa như là một bài kiểm tra thực hiện keytool của bạn. –

+0

Tôi không nghĩ 'keytool' là ý của bạn. keytool là một chương trình java được sử dụng để tạo keystores. – Otra

7

Bạn có thể tìm thêm thông tin về quy trình ký Tài liệu Android tại đây: http://developer.android.com/guide/publishing/app-signing.html

Có, bạn có thể ký nhiều ứng dụng với cùng một kho khóa. Nhưng bạn phải nhớ một điều quan trọng: nếu bạn xuất bản một ứng dụng trên Cửa hàng Play, bạn phải ký nó bằng một chứng chỉ không gỡ lỗi. Và nếu một ngày bạn muốn xuất bản bản cập nhật cho ứng dụng này, kho khóa được sử dụng để ký APK phải giống nhau. Nếu không, bạn sẽ không thể đăng cập nhật của mình.

14

Android Market yêu cầu bạn ký mọi ứng dụng bạn xuất bản bằng chứng chỉ, sử dụng cơ chế khóa công khai/riêng tư (chứng chỉ được ký bằng khóa riêng của bạn). Điều này cung cấp một lớp bảo mật ngăn chặn, trong số những thứ khác, những kẻ tấn công từ xa đẩy các bản cập nhật độc hại đến ứng dụng của bạn ra thị trường (tất cả các bản cập nhật phải được ký bằng cùng một khóa).

Từ Các App-Signing Guide của trang web cho nhà phát triển Android:

Nói chung, chiến lược khuyến khích cho tất cả các nhà phát triển là để đăng ký tất cả các ứng dụng của bạn với cùng một chứng chỉ, trong suốt tuổi thọ dự kiến ​​của các ứng dụng của bạn. Có một số lý do khiến bạn nên làm như vậy ...

Sử dụng cùng một khóa có một số lợi ích - Một là dễ dàng hơn để chia sẻ dữ liệu giữa các ứng dụng được ký bằng cùng một khóa. Một điều khác nữa là nó cho phép nhiều ứng dụng được ký bằng cùng một khóa để chạy trong cùng một quy trình, vì vậy một nhà phát triển có thể xây dựng nhiều ứng dụng "mô-đun" hơn.

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