Tệp kho khóa Android là gì và được sử dụng để làm gì?


127

Đây là một câu hỏi chung, nhưng đặc biệt tôi quan tâm đến việc sử dụng cho Android. Tệp kho khóa là gì và đượ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 để ký ứng dụng của họ (chính xác nghĩa là gì khi "ký" một .apk?) Và ý nghĩa (nếu có) của việc này là gì?


1
Bạn dường như đang nhầm lẫn hai chủ đề. Đầu tiên là kho khóa và thứ hai là ký APK. Ngoài ra, hãy xem Thực tập bảo mật Android của Nikolay Elenkov : Hướng dẫn chuyên sâu về kiến ​​trúc bảo mật của Android .
ngày

Câu trả lời:


130

Câu trả lời tôi sẽ cung cấp là một tệp kho khóa là để xác thực chính bạn với bất kỳ ai đang hỏi. Không bị hạn chế 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 và toàn bộ xác thực.

Xét về những gì bạn làm với nó cho Android và có lẽ là những gì bạn đang tìm kiếm kể từ khi bạn đề cập đến việc 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 với thông tin đăng nhập của bạn. Bạn có thể tạo thương hiệu cho nhiều ứng dụng bằng cùng một khóa, trên thực tế, bạn nên sử dụng một chứng chỉ để gắn nhãn cho 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 ý của bạn là gì. Tôi cho rằng điều đó có nghĩa là không ai ngoài người 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 là nếu bạn phát hành nó ra ngoài tự nhiên, mất chứng chỉ bạn đã sử dụng để ký đơn, thì bạn không thể phát hành bản cập nhật để giữ cho chứng chỉ đó an toàn và được sao lưu nếu cần.

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


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

Là máy Keystore cụ thể? 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 mình ??
Yawar

7
Lời giải thích hay. Bạn cũng có thể giải thích lý do tại sao chúng tôi yêu cầu KeyStorePassword, bí danh chính, KeyPassword. Có vẻ như dư thừa để có ba chìa khóa.
ARK

18

Android Market yêu cầu bạn ký tất cả các ứng dụng bạn xuất bản bằng chứng chỉ, sử dụng cơ chế khóa chung / riêng (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 vào ứ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ý với cùng một khóa).

Từ Hướng dẫn ký ứng dụng của trang web Nhà phát triển Android:

Nói chung, chiến lược được đề xuất cho tất cả các nhà phát triển là 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 tại sao bạn nên làm như vậy ...

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


10

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

Có, bạn có thể ký một số ứng dụng với cùng 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 Play Store, bạn phải ký nó với một chứng chỉ không gỡ lỗi. Và nếu một ngày nào đó 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 bạn.


Không, điều này là sai. Kho khóa mà bạn sử dụng để ký apk có thể khác nhau, nhưng khóa mà bạn sử dụng để ký apk phải giống nhau. Tệp kho khóa chỉ là một tệp được sử dụng để lưu trữ thông tin khóa và chứng chỉ, bạn có thể có nhiều thực thể khóa trong cùng một tệp kho khóa.
zeleven

0

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


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

Tôi không có nghĩa là bạn phải ký nó để gỡ lỗi ... nhưng bạn có thể sử dụng kho khóa như một triển khai thử nghiệm keytool của mình.
Adam Storm

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

vâng bạn đúng, keytool không phải là ý tôi. Tôi đoán "chìa khóa" là những gì tôi muốn nói. Tôi chỉ cố gắng giải thích cho người hỏi rằng bạn có thể có khóa apk chung để gỡ lỗi, nhưng khi xuất bản, mỗi apk sẽ cần phải có khóa duy nhất để chỉnh sửa và nâng cấp.
Adam Storm

Họ không cần các khóa duy nhất mặc dù ... bạn có thể ký nhiều apk bằng một khóa riêng, thực sự bạn nên làm như vậy. Bạn có thể tưởng tượng việc theo dõi 10 certs / khóa khác nhau cho 10 ứng dụng không?
Otra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.