Ký ứng dụng

Android yêu cầu tất cả các APK đều phải có chữ ký số được chứng thực trước khi được cài đặt hoặc được cập nhật trên thiết bị. Khi phát hành bằng cách sử dụng Android App Bundle, bạn cần ký gói ứng dụng bằng một khoá tải lên trước khi tải lên Play Console. Sau đó, tính năng ký ứng dụng của Play sẽ xử lý phần việc còn lại. Đối với cách phân phối ứng dụng bằng APK trên Cửa hàng Play (được tạo trước tháng 8 năm 2021) hoặc trên các cửa hàng khác, bạn phải ký APK thủ công mới có thể tải lên.

Trang này sẽ hướng dẫn bạn một số khái niệm quan trọng liên quan đến việc ký ứng dụng và bảo mật, cách ký ứng dụng của bạn để phát hành lên Google Play bằng Android Studio và cách định cấu hình Tính năng ký ứng dụng của Play.

Sau đây là thông tin tổng quan cấp cao về những bước bạn có thể cần thực hiện để ký và phát hành ứng dụng mới lên Google Play:

  1. Tạo khoá tải lên và kho khoá
  2. Ký ứng dụng bằng khoá tải lên
  3. Định cấu hình Tính năng ký ứng dụng của Play
  4. Tải ứng dụng lên Google Play
  5. Chuẩn bị và ra mắt bản phát hành của ứng dụng

Nếu ứng dụng của bạn đã được phát hành lên Cửa hàng Google Play bằng một khoá ký ứng dụng hiện có hoặc bạn muốn chọn khoá ký ứng dụng cho ứng dụng mới thay vì để Google tạo khoá, hãy làm theo các bước sau:

  1. Ký ứng dụng bằng khoá ký của ứng dụng và chọn tuỳ chọn mã hoá và xuất khoá ký của ứng dụng.
  2. Tải khoá ký ứng dụng của bạn lên tính năng ký ứng dụng của Play.
  3. (Đề xuất) Tạo và đăng ký chứng chỉ tải lên để nhận các bản cập nhật trong tương lai cho ứng dụng của bạn
  4. Tải ứng dụng lên Google Play
  5. Chuẩn bị và ra mắt bản phát hành của ứng dụng

Trang này cũng tìm hiểu cách quản lý khoá của riêng bạn khi tải ứng dụng lên các cửa hàng ứng dụng khác. Nếu bạn không sử dụng Android Studio hoặc muốn ký ứng dụng từ dòng lệnh, hãy tìm hiểu cách sử dụng apksigner.

Tính năng ký ứng dụng của Play

Với Tính năng ký ứng dụng của Play, Google quản lý và bảo vệ khoá ký cho ứng dụng của bạn, đồng thời, sử dụng khoá đó để ký các tệp APK hỗ trợ hoạt động phân phối. Ngoài ra, do các gói ứng dụng cản trở việc tạo và ký các tệp APK cho Cửa hàng Google Play, nên bạn cần cài đặt tính năng ký ứng dụng của Play trước khi tải gói ứng dụng của mình lên. Cách làm này giúp bạn tận dụng được những tính năng sau:

  • Sử dụng Android App Bundle và hỗ trợ các chế độ phân phối nâng cao của Google Play. Android App Bundle giúp giảm dung lượng ứng dụng của bạn để các bản phát hành đơn giản hơn và giúp bạn có thể sử dụng các mô-đun tính năng cũng như được trải nghiệm tức thì.
  • Tăng tính bảo mật của khoá ký và cho phép bạn sử dụng khoá tải lên riêng để ký gói ứng dụng mà bạn tải lên Google Play.
  • Tính năng nâng cấp khoá một lần cho các lượt cài đặt mới cho phép bạn thay đổi khoá ký ứng dụng trong trường hợp khoá hiện có của bạn bị xâm phạm hoặc nếu bạn cần chuyển sang một khoá mạnh hơn về mặt mật mã

Tính năng ký ứng dụng của Play sử dụng hai khoá: khoá ký ứng dụngkhoá tải lên , được mô tả chi tiết hơn trong phần về Khoá và kho khoá , Bạn giữ khoá tải lên và sử dụng khoá này để ký ứng dụng của mình để tải lên Cửa hàng Google Play. Google sử dụng chứng chỉ tải lên để xác minh danh tính của bạn và ký (các) APK của bạn bằng khoá ký ứng dụng để phân phối như được hiển thị trong hình 1. Bằng cách sử dụng một khoá tải lên riêng biệt, bạn có thể yêu cầu đặt lại khoá tải lên nếu bạn làm mất khoá hay khoá bị xâm phạm.

So với các ứng dụng được tạo trước tháng 8 năm 2021 và chưa chọn sử dụng Tính năng ký ứng dụng của Play, nếu bạn mất khoá ký ứng dụng, bạn sẽ không thể cập nhật ứng dụng của mình.

Hình 1 Ký ứng dụng bằng Tính năng ký ứng dụng của Play

Khoá của bạn được lưu trữ trên chính cơ sở hạ tầng nơi Google sử dụng để lưu trữ chính các khoá của mình, tại đó các khoá này được Dịch vụ quản lý khoá của Google bảo vệ. Bạn có thể tìm hiểu thêm về cơ sở hạ tầng kỹ thuật của Google bằng cách đọc Báo cáo chính thức về bảo mật Google Cloud.

Khi bạn sử dụng Tính năng ký ứng dụng của Play, nếu bị mất hoặc bị lộ khoá tải lên, bạn có thể liên hệ với Google để thu hồi khoá tải lên cũ và tạo một khoá tải lên mới. Vì khoá ký ứng dụng của bạn được Google bảo mật, bạn có thể tiếp tục tải các phiên bản mới của ứng dụng lên dưới dạng bản cập nhật cho ứng dụng gốc, ngay cả khi bạn thay đổi khoá tải lên. Để tìm hiểu thêm, hãy đọc bài viết Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Phần tiếp theo mô tả một số thuật ngữ và khái niệm quan trọng liên quan đến việc ký và bảo mật ứng dụng. Nếu bạn muốn bỏ qua và tìm hiểu cách chuẩn bị ứng dụng để tải lên Cửa hàng Google Play, hãy chuyển tới phần Ký ứng dụng để phát hành.

Kho khoá, khoá và chứng chỉ

Kho khoá Java (.jks hoặc .keystore) là các tệp nhị phân đóng vai trò là kho lưu trữ chứng chỉ và khoá riêng tư.

Chứng chỉ khoá công khai (tập tin .der hoặc .pem), còn gọi là chứng chỉ số hay chứng chỉ danh tính, chứa khoá công khai của cặp khoá công khai/riêng tư, cũng như một số siêu dữ liệu có vai trò nhận dạng chủ sở hữu (chẳng hạn như tên và vị trí) của khoá riêng tư tương ứng.

Sau đây là các loại khoá khác nhau mà bạn cần biết:

  • Khoá ký ứng dụng: Khoá dùng để ký APK đã cài đặt trên thiết bị của người dùng. Nằm trong mô hình cập nhật bảo mật của Android, khoá ký sẽ không bao giờ thay đổi trong suốt thời gian hoạt động của ứng dụng. Khoá ký ứng dụng là khoá riêng tư và phải được giữ bí mật. Tuy nhiên, bạn có thể chia sẻ chứng chỉ được tạo bằng khoá ký ứng dụng của mình.
  • Khoá tải lên: Khoá mà bạn sử dụng để ký gói ứng dụng hoặc APK trước khi bạn tải lên để ký ứng dụng với Google Play. Bạn phải bảo mật khoá tải lên. Tuy nhiên, bạn có thể chia sẻ chứng chỉ được tạo bằng khoá tải lên. Bạn có thể tạo khoá tải lên theo một trong các cách sau:

    • Nếu bạn chọn để Google tạo khoá ký ứng dụng cho bạn khi chọn sử dụng tính năng này, thì Google sẽ chỉ định khoá mà bạn sử dụng để ký bản phát hành đầu tiên của mình làm khoá tải lên của bạn.
    • Nếu cung cấp khoá ký ứng dụng cho Google khi chọn sử dụng tính năng này cho ứng dụng mới hoặc ứng dụng hiện tại, thì bạn có thể chọn tạo khoá tải lên mới trong hoặc sau khi chọn sử dụng để tăng cường bảo mật.
    • Nếu không tạo khoá tải lên mới, bạn sẽ tiếp tục sử dụng khoá ký ứng dụng làm khoá tải lên để ký vào mỗi bản phát hành.

    Mẹo:Để giữ an toàn cho khoá, bạn nên sử dụng khoá ký ứng dụng và khoá tải lên khác nhau.

Làm việc với nhà cung cấp API

Bạn có thể tải chứng chỉ cho khoá ký ứng dụng xuống và khoá tải lên từ trang Phát hành > Thiết lập > Tính toàn vẹn của ứng dụng trong Play Console. Tệp này dùng để đăng ký (các) khoá công khai với các nhà cung cấp API; tệp được chia sẻ vì tệp này không chứa khoá riêng tư của bạn.

Tệp tham chiếu chứng chỉ - Một tệp mô tả ngắn và duy nhất về chứng chỉ mà các nhà cung cấp API thường yêu cầu cùng với tên gói nhằm đăng ký một ứng dụng để sử dụng dịch vụ của họ. Bạn có thể tìm thấy tệp tham chiếu MD5, SHA-1 và SHA-256 của chứng chỉ ký ứng dụng và tải lên trang Ký ứng dụng của Play Console. Bạn cũng có thể tính các tệp tham chiếu khác bằng cách tải chứng chỉ gốc (.der) từ chính trang đó.

Ký bản gỡ lỗi

Khi chạy hoặc gỡ lỗi dự án của bạn từ IDE, Android Studio sẽ tự động ký ứng dụng của bạn bằng một chứng chỉ gỡ lỗi do các công cụ SDK Android tạo. Lần đầu tiên bạn chạy hoặc gỡ lỗi dự án của mình trong Android Studio, IDE sẽ tự động tạo kho khoá và chứng chỉ gỡ lỗi trong $HOME/.android/debug.keystore, đồng thời đặt mật khẩu kho khoá và khoá.

Vì chứng chỉ gỡ lỗi do các công cụ xây dựng tạo ra và không an toàn theo thiết kế nên hầu hết các cửa hàng ứng dụng (bao gồm cả Cửa hàng Google Play) không chấp nhận những ứng dụng được ký bằng chứng chỉ gỡ lỗi trước khi phát hành.

Android Studio sẽ tự động lưu trữ thông tin ký gỡ lỗi của bạn trong cấu hình ký kết để bạn không phải nhập lại mỗi lần gỡ lỗi. Cấu hình ký là một đối tượng bao gồm tất cả thông tin cần thiết để ký ứng dụng của bạn, bao gồm vị trí kho khoá, mật khẩu kho khoá, tên khoá và mật khẩu khoá.

Để biết thêm thông tin về cách tạo và chạy ứng dụng để gỡ lỗi, hãy xem phần Tạo và chạy ứng dụng của bạn.

Hết hạn chứng chỉ gỡ lỗi

Chứng chỉ tự ký dùng để ký ứng dụng gỡ lỗi sẽ hết hạn vào 30 năm kể từ ngày tạo. Khi chứng chỉ hết hạn, bạn sẽ gặp lỗi bản dựng.

Để khắc phục sự cố này, chỉ cần xoá tệp debug.keystore được lưu trữ ở một trong các vị trí sau:

  • ~/.android/ trên OS X và Linux
  • C:\Documents and Settings\user\.android\ trên Windows XP
  • C:\Users\user\.android\ trên Windows Vista và Windows 7, 8 và 10

Trong lần tới khi bạn tạo và chạy một phiên bản gỡ lỗi của ứng dụng, Android Studio sẽ tạo lại một kho khoá và khoá gỡ lỗi mới.

Ký ứng dụng của bạn để phát hành lên Google Play

Khi đã sẵn sàng phát hành ứng dụng, bạn cần ký ứng dụng của mình và tải ứng dụng lên một cửa hàng ứng dụng, chẳng hạn như Google Play. Khi phát hành ứng dụng lên Google Play lần đầu tiên, bạn cũng phải định cấu hình Tính năng ký ứng dụng của Play. Bạn không bắt buộc phải sử dụng Tính năng ký ứng dụng của Play đối với các ứng dụng được tạo trước tháng 8 năm 2021. Phần này cho bạn biết cách ký ứng dụng đúng cách để phát hành và định cấu hình Tính năng ký ứng dụng của Play.

Tạo khoá tải lên và kho khoá

Nếu chưa có khoá tải lên, khoá này rất hữu ích khi định cấu hình Tính năng ký ứng dụng của Play, bạn có thể tạo một khoá bằng Android Studio như sau:

  1. Trong thanh trình đơn, hãy nhấp vào Tạo > Tạo gói/APK đã ký.
  2. Trong hộp thoại Tạo gói đã ký APK hoặc APK, hãy chọn Android App Bundle hoặc APK và nhấp vào Tiếp theo.
  3. Bên dưới trường Đường dẫn cửa hàng chính, hãy nhấp vào Tạo mới.
  4. Trên cửa sổ Cửa hàng khoá mới, hãy cung cấp các thông tin sau cho kho khoá và khoá của bạn, như trong hình 2.

    Hình 2. Tạo khoá tải lên và kho khoá mới trong Android Studio.

  5. Kho khoá

    • Đường dẫn cửa hàng chính: Chọn vị trí mà bạn sẽ tạo kho khoá. Ngoài ra, tên tệp phải được thêm vào cuối đường dẫn vị trí bằng phần mở rộng .jks.
    • Mật khẩu: Tạo và xác nhận mật khẩu an toàn cho kho khoá của bạn.
  6. Khóa

    • Bí danh: Nhập tên nhận dạng cho khoá của bạn.
    • Mật khẩu: Tạo và xác nhận mật khẩu an toàn cho khoá của bạn. Mật khẩu này phải giống với mật khẩu kho khoá của bạn. (Vui lòng tham khảo vấn đề đã biết để biết thêm thông tin)
    • Hiệu lực (năm): Đặt khoảng thời gian tính bằng năm mà khoá của bạn có hiệu lực. Khoá của bạn phải có hiệu lực trong ít nhất 25 năm, để bạn có thể ký các bản cập nhật ứng dụng bằng chính khoá đó trong suốt thời gian hoạt động của ứng dụng.
    • Chứng chỉ: Nhập một số thông tin về bản thân cho chứng chỉ của bạn. Thông tin này không hiển thị trong ứng dụng nhưng được đưa vào chứng chỉ như một phần của APK.
  7. Sau khi bạn hoàn tất biểu mẫu, hãy nhấp vào OK.

  8. Nếu bạn muốn xây dựng và ký ứng dụng bằng khoá tải lên, hãy tiếp tục đến phần Cách ký ứng dụng bằng khoá tải lên. Nếu bạn chỉ muốn tạo khoá và kho khoá, hãy nhấp vào Huỷ.

Ký ứng dụng bằng khoá

Nếu bạn đã có khoá tải lên, hãy dùng khoá đó để ký ứng dụng. Thay vào đó, nếu ứng dụng đã được ký và phát hành lên cửa hàng Google Play bằng một khoá ký ứng dụng hiện có, hãy sử dụng khoá đó để ký ứng dụng và đảm bảo mã hoá cũng như xuất ứng dụng để tham gia sử dụng ứng dụng của bạn Tính năng ký ứng dụng của Play. Sau đó, bạn có thể tạo một khoá tải lên riêng biệtđăng ký chứng chỉ công khai của khoá tải lên với Google Play để ký và tải các bản cập nhật tiếp theo lên ứng dụng của bạn.

Để ký ứng dụng của bạn bằng Android Studio và xuất khoá ký ứng dụng hiện có, hãy làm theo các bước sau:

  1. Nếu bạn hiện không mở hộp thoại Tạo gói đã ký hoặc APK, hãy nhấp vào Tạo > Tạo gói/APK đã ký.
  2. Trong hộp thoại Tạo gói đã ký hoặc APK, hãy chọn Android App Bundle hoặc APK và nhấp vào Tiếp theo ,
  3. Chọn một mô-đun từ trình đơn thả xuống.
  4. Chỉ định đường dẫn đến kho khoá của bạn, email đại diện cho khoá của bạn rồi nhập mật khẩu cho cả hai khoá. Nếu bạn chưa chuẩn bị kho khoá và khoá tải lên trước tiên, hãy Tạo khoá tải lên và kho khoá, sau đó quay lại để hoàn thành bước này.

    Hình 3 Ký ứng dụng bằng khoá tải lên.

  5. Nếu bạn đang ký gói ứng dụng bằng khoá ký ứng dụng hiện có và sau đó bạn muốn chọn ứng dụng tham gia Tính năng ký ứng dụng của Play, hãy chọn hộp bên cạnh Xuất khoá đã mã hoá và chỉ định một đường dẫn để lưu khoá ký của bạn dưới dạng tệp *.pepk mã hoá. Sau đó, bạn có thể sử dụng khoá ký ứng dụng đã mã hoá để chọn sử dụng một ứng dụng hiện có trên Tính năng ký ứng dụng của Play.

  6. Nhấp vào Tiếp theo.

  7. Trong cửa sổ tiếp theo (hiển thị trong hình 4), hãy chọn thư mục đích cho ứng dụng đã ký, chọn loại bản dựng, chọn (các) phiên bản sản phẩm (nếu có).

  8. Nếu đang tạo và ký APK, bạn cần chọn Phiên bản chữ ký mà bạn muốn ứng dụng hỗ trợ. Để tìm hiểu thêm, hãy đọc về các chương trình ký ứng dụng

  9. Nhấp vào Hoàn tất.

    Hình 4. Tạo một phiên bản đã ký của ứng dụng cho các phiên bản sản phẩm đã chọn.

Hình 5. Nhấp vào đường liên kết trong cửa sổ bật lên để phân tích hoặc xác định gói ứng dụng hoặc xác định vị trí khoá ký đã xuất của bạn.

Sau khi Android Studio hoàn tất quá trình tạo ứng dụng đã ký, bạn có thể tìm hoặc phân tích ứng dụng của mình bằng cách nhấp vào tuỳ chọn thích hợp trong thông báo bật lên. Nếu đã chọn tuỳ chọn xuất khoá ký, bạn có thể nhanh chóng chuyển đến khoá đó bằng cách nhấp vào mũi tên thả xuống ở góc dưới cùng bên phải cửa sổ bật lên để mở rộng và nhấp vào Hiển thị tệp khoá đã xuất, như minh hoạ trong hình 5.

Bây giờ, bạn đã sẵn sàng chọn cho ứng dụng của mình tham gia Tính năng ký ứng dụng của Play và tải ứng dụng lên để phát hành. Nếu mới sử dụng quy trình phát hành ứng dụng, bạn có thể đọc bài viết Tổng quan về việc phát hành. Nếu không, hãy tiếp tục truy cập trang về cách Tải ứng dụng lên Play Console.

Sử dụng tính năng ký ứng dụng của Play

Như đã mô tả ở trên trong trang này, bạn cần phải định cấu hình Tính năng ký ứng dụng của Play để ký ứng dụng của bạn để phân phối thông qua Google Play (trừ các ứng dụng được tạo trước tháng 8 năm 2021, và tính năng này có thể tiếp tục hoạt động) phân phối APK tự ký). Các bước bạn cần thực hiện phụ thuộc vào việc ứng dụng của bạn chưa được phát hành lên Google Play hay ứng dụng của bạn đã được ký và phát hành trước tháng 8 năm 2021 bằng cách sử dụng khoá ký ứng dụng hiện có.

Định cấu hình ứng dụng mới

Để định cấu hình ký cho một ứng dụng chưa được phát hành lên Google Play, hãy tiến hành như sau:

  1. Tạo một khoá tải lênký ứng dụng của bạn bằng khoá tải lên đó, nếu bạn chưa làm việc này.
  2. Đăng nhập Play Console.
  3. Làm theo các bước để chuẩn bị và ra mắt bản phát hành để tạo bản phát hành mới.
  4. Sau khi bạn chọn kênh phát hành, hãy định cấu hình ký ứng dụng trong phần Tính toàn vẹn của ứng dụng như sau:
    • Để Google Play tạo một khoá ký ứng dụng cho bạn và dùng khoá đó để ký ứng dụng của bạn, bạn không phải làm gì cả. Khoá bạn dùng để ký bản phát hành đầu tiên sẽ trở thành khoá tải lên của bạn. Bạn sẽ dùng khoá đó để ký các bản phát hành trong tương lai.
    • Để sử dụng cùng một khoá với ứng dụng khác trên tài khoản nhà phát triển của bạn, hãy chọn Thay đổi khoá ký ứng dụng > Sử dụng khoá của riêng tôi > Sử dụng cùng một khoá với ứng dụng khác trong tài khoản này, chọn ứng dụng, sau đó nhấp vào Tiếp tục.
    • Để cung cấp khoá ký của riêng bạn để Google sử dụng khi ký ứng dụng, hãy chọn Thay đổi khoá ký ứng dụng > Sử dụng khoá của riêng tôi và chọn một trong các tuỳ chọn cho phép bạn tải tệp khoá riêng tư và chứng chỉ công khai của khoá.

Trong phần có tên App Bundle, hãy nhấp vào Duyệt tệp để tìm và tải ứng dụng bạn đã ký lên bằng khoá tải lên. Để biết thêm thông tin về việc phát hành ứng dụng, hãy tham khảo chuẩn bị và ra mắt bản phát hành. Khi bạn phát hành ứng dụng của mình sau khi định cấu hình tính năng ký ứng dụng của Play, Google Play sẽ tạo (trừ khi bạn tải khoá hiện có lên) và quản lý khoá ký của ứng dụng cho bạn. Bạn chỉ cần ký các bản cập nhật tiếp theo cho ứng dụng của mình bằng cách sử dụng khoá tải lên của ứng dụng trước khi tải lên Google Play.

Nếu bạn cần tạo khoá tải lên mới cho ứng dụng, hãy chuyển đến phần về cách Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Đăng ký tính năng ký ứng dụng cho một ứng dụng hiện có

Nếu đang cập nhật một ứng dụng đã phát hành lên Google Play bằng khoá ký ứng dụng hiện có, bạn có thể chọn sử dụng Tính năng ký ứng dụng của Play như sau:

  1. Nếu bạn chưa thực hiện, hãy ký ứng dụng của bạn bằng Android Studio với khoá ký ứng dụng hiện có và hãy nhớ đánh dấu vào hộp bên cạnhXuất khoá mã hoá để lưu khoá ký của bạn dưới dạng tệp *.pepk mã hoá . Bạn sẽ cần tệp này ở bước sau. Bạn cũng có thể thực hiện việc này bằng công cụ PEPK. Bạn có thể tải công cụ này xuống từ Play Console.
  2. Đăng nhập vào Play Console và chuyển đến ứng dụng của bạn.
  3. Trên trình đơn bên trái, hãy chọn Phát hành > Thiết lập >Tính toàn vẹn của ứng dụng.
  4. Xem lại Điều khoản dịch vụ và chọn Chấp nhận nếu có.
  5. Chọn một trong các lựa chọn mô tả chính xác nhất về khoá ký mà bạn muốn tải lên Google Play rồi làm theo thông tin hướng dẫn bạn nhìn thấy. Ví dụ, Nếu bạn đã dùng Android Studio để xuất khoá ký cho ứng dụng của mình, như mô tả trên trang này, hãy chọn Tải khoá đã xuất từ Android Studio lên rồi tải tệp đã mã hoá chứa khoá *.pepk của bạn lên.
  6. Nhấp vào Đăng ký.

Bây giờ, bạn sẽ thấy một trang có thông tin chi tiết về chứng chỉ ký và tải lên của ứng dụng. Google Play hiện sẽ ký ứng dụng của bạn bằng khoá hiện có khi bạn triển khai ứng dụng đó cho người dùng. Tuy nhiên, một trong những lợi ích quan trọng nhất của Tính năng ký ứng dụng của Play là bạn có thể sử dụng khoá mà bạn sử dụng để ký khoá bạn tải lên Google Play khỏi khoá mà Google Play sử dụng để ký ứng dụng của bạn để phân phối cho người dùng. Vì vậy, hãy cân nhắc làm theo các bước trong phần tiếp theo để tạo và đăng ký khoá tải lên riêng.

Tạo và đăng ký chứng chỉ tải lên

Khi phát hành một ứng dụng không được ký bằng khoá tải lên, Google Play Console sẽ cung cấp tuỳ chọn đăng ký một khoá cho các bản cập nhật của ứng dụng trong tương lai. Mặc dù bước này không bắt buộc, nhưng bạn nên phát hành ứng dụng bằng một khoá riêng biệt với khoá mà Google Play dùng để phân phối ứng dụng của bạn cho người dùng. Khi đó, Google sẽ giữ an toàn cho khoá ký của bạn và bạn có tuỳ chọn đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm. Phần này mô tả cách tạo khoá tải lên, tạo chứng chỉ tải lên từ khoá đó và đăng ký chứng chỉ đó với Google Play để cập nhật ứng dụng trong tương lai.

Nội dung sau đây mô tả các tình huống mà bạn thấy tuỳ chọn đăng ký chứng chỉ tải lên trong Play Console:

  • Khi bạn phát hành một ứng dụng mới, được ký bằng khoá ký và chọn sử dụng Tính năng ký ứng dụng của Play.
  • Khi bạn chuẩn bị phát hành một ứng dụng hiện có đã chọn sử dụng Play App Signing, nhưng ứng dụng đó được ký bằng khoá ký của ứng dụng đó.

Nếu bạn chưa phát hành bản cập nhật cho ứng dụng hiện có đã chọn sử dụng Tính năng ký ứng dụng của Play và bạn muốn đăng ký chứng chỉ tải lên, hãy hoàn thành các bước bên dưới và tiếp tục chuyển đến phần cách đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Tạo một khoá tải lên và kho khoá nếu bạn chưa thực hiện việc này.

Sau khi tạo khoá tải lên và kho khoá, bạn cần tạo chứng chỉ công khai từ khoá tải lên bằng cách sử dụng keytool với lệnh sau:

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Hiện bạn đã có chứng chỉ tải lên, hãy đăng ký chứng chỉ đó với Google khi được nhắc trong Play Console hoặc đọc phần bên dưới để đăng ký chứng chỉ thông qua nhóm hỗ trợ Google Play.

Nâng cấp khoá ký ứng dụng

Trong một số trường hợp, bạn có thể muốn thay đổi khoá ký của ứng dụng. Ví dụ: vì bạn muốn một khoá mã hoá mạnh hơn hoặc khoá ký của bạn đã bị xâm phạm. Tuy nhiên, vì người dùng chỉ có thể cập nhật ứng dụng của bạn nếu bản cập nhật được ký bằng cùng một khoá ký, nên khó có thể thay đổi khoá ký cho một ứng dụng đã phát hành.

Nếu phát hành ứng dụng của mình lên Google Play, bạn có thể nâng cấp khoá ký cho ứng dụng đã xuất bản qua Play Console—Khoá mới của bạn được dùng để ký các bản cài đặt mới và bản cập nhật ứng dụng, trong khi khoá ký ứng dụng cũ là dùng để ký các bản cập nhật cho những người dùng đã cài đặt ứng dụng của bạn trước khi nâng cấp khoá.

Để tìm hiểu thêm, hãy đọc bài viết Nâng cấp khoá ký ứng dụng của bạn cho các lượt cài đặt mới.

Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm

Nếu khoá tải lên riêng tư của bạn bị mất hoặc bị xâm phạm, bạn có thể tạo khoá mới và liên hệ với nhóm hỗ trợ Google Play để đặt lại khoá.

Định cấu hình quy trình xây dựng để tự động ký ứng dụng của bạn

Trong Android Studio, bạn có thể định cấu hình dự án để tự động ký phiên bản phát hành của ứng dụng trong quá trình xây dựng bằng cách tạo một cấu hình ký và chỉ định cấu hình đó cho loại bản phát hành. Cấu hình ký gồm có vị trí kho khoá, mật khẩu kho khoá, bí danh khoá và mật khẩu khoá. Để tạo một cấu hình ký và chỉ định cấu hình đó cho loại bản phát hành bằng Android Studio, hãy hoàn thành các bước sau:

  1. Trong cửa sổ Dự án, hãy nhấp chuột phải vào ứng dụng của bạn rồi nhấp vào Mở phần Cài đặt mô-đun.
  2. Trên cửa sổ Cấu trúc dự án, ở mục Mô-đun ở bảng điều khiển bên trái, hãy nhấp vào mô-đun mà bạn muốn ký.
  3. Nhấp vào thẻ , sau đó nhấp vào Thêm .
  4. Chọn tệp kho khoá của bạn, nhập tên cho cấu hình ký này (vì bạn có thể tạo nhiều cấu hình) và nhập thông tin bắt buộc.

    Hình 7. Cửa sổ để tạo cấu hình ký mới.

  5. Nhấp vào thẻ Loại bản dựng.
  6. Nhấp vào bản dựng phát hành.
  7. Trong Cấu hình ký, hãy chọn cấu hình ký bạn vừa tạo.

    Hình 8. Chọn một cấu hình ký trong Android Studio.

  8. Nhấp vào OK.

Giờ đây, mỗi khi bạn tạo loại bản dựng phát hành bằng cách chọn một tuỳ chọn trong mục Tạo > Tạo gói dịch vụ/APK trong Android Studio, IDE sẽ tự động ký ứng dụng của bạn , sử dụng cấu hình ký mà bạn đã chỉ định. Bạn có thể tìm thấy APK hoặc gói ứng dụng đã ký trong thư mục build/outputs/ bên trong thư mục dự án cho mô-đun mà bạn đang dựng.

Khi bạn tạo một cấu hình ký, thông tin ký sẽ bao gồm trong văn bản thuần tuý trong các tệp tạo Gradle của bạn. Nếu làm việc theo nhóm hoặc chia sẻ mã công khai, bạn nên giữ an toàn cho thông tin ký của mình bằng cách xoá thông tin đó khỏi các tệp bản dựng và lưu trữ riêng thông tin đó. Bạn có thể đọc thêm về cách xoá thông tin ký khỏi tệp bản dựng trong phần Xoá thông tin ký khỏi tệp bản dựng của bạn. Để biết thêm về cách bảo mật thông tin ký, hãy đọc phần Bảo mật khoá của bạn.

Thêm các phiên bản sản phẩm khác nhau

Nếu ứng dụng của bạn sử dụng các phiên bản sản phẩm khác nhau và bạn muốn ký từng phiên bản theo các cách khác nhau, bạn có thể tạo cấu hình ký tên bổ sung và chỉ định các phiên bản đó theo phiên bản:

  1. Trong cửa sổ Dự án, hãy nhấp chuột phải vào ứng dụng của bạn rồi nhấp vào Mở phần Cài đặt mô-đun.
  2. Trên cửa sổ Cấu trúc dự án, ở mục Mô-đun ở bảng điều khiển bên trái, hãy nhấp vào mô-đun mà bạn muốn ký.
  3. Nhấp vào thẻ , sau đó nhấp vào Thêm .
  4. Chọn tệp kho khoá của bạn, nhập tên cho cấu hình ký này (vì bạn có thể tạo nhiều cấu hình) và nhập thông tin bắt buộc.

    Hình 10. Cửa sổ để tạo cấu hình ký mới.

  5. Lặp lại các bước 3 và 4 nếu cần cho đến khi bạn tạo xong tất cả các cấu hình ký.
  6. Nhấp vào thẻ Phiên bản.
  7. Nhấp vào phiên bản mà bạn muốn định cấu hình, sau đó chọn cấu hình ký phù hợp từ trình đơn thả xuống Cấu hình ký.

    Hình 11 Định cấu hình các tuỳ chọn ký kết theo phiên bản sản phẩm.

    Lặp lại để định cấu hình bất kỳ phiên bản sản phẩm bổ sung nào.

  8. Nhấp vào OK.

Bạn cũng có thể chỉ định tuỳ chọn cài đặt ký kết trong tệp cấu hình Gradle. Để biết thêm thông tin, hãy xem phần Định cấu hình chế độ cài đặt ký.

Quản lý khoá ký của riêng bạn

Nếu chọn không sử dụng Tính năng ký ứng dụng của Play (chỉ dành cho các ứng dụng được tạo trước tháng 8 năm 2021), thì bạn có thể quản lý kho khoá và kho khoá ứng dụng của riêng mình. Xin lưu ý rằng bạn có trách nhiệm bảo mật khoá và kho khoá. Ngoài ra, ứng dụng của bạn sẽ không thể hỗ trợ Android App Bundle, Play Feature Delivery và Play Asset Delivery.

Khi bạn đã sẵn sàng tạo khoá và kho khoá của riêng mình, hãy đảm bảo rằng bạn chọn một mật khẩu mạnh cho kho khoá của bạn và một mật khẩu mạnh riêng cho từng khoá riêng tư được lưu trữ trong kho khoá. Bạn phải giữ kho khoá của mình ở một nơi an toàn và bảo mật. Nếu bạn mất quyền truy cập vào khoá ký ứng dụng hoặc khoá của bạn bị từ chối, Google sẽ không thể truy xuất khoá ký ứng dụng của bạn và bạn sẽ không thể phát hành phiên bản mới của ứng dụng dưới dạng bản cập nhật cho ứng dụng gốc. Để biết thêm thông tin, hãy xem phần Bảo mật khoá của bạn ở bên dưới.

Nếu quản lý kho khoá và khoá ký ứng dụng của riêng bạn, thì khi ký APK, bạn sẽ ký APK bằng khoá ký ứng dụng cục bộ và tải APK đã ký trực tiếp lên Cửa hàng Google Play để phân phối như hiển thị trong hình 10.

Hình 12 Ký ứng dụng khi bạn quản lý khoá ký ứng dụng của riêng mình

Khi bạn sử dụng Tính năng ký ứng dụng của Play, Google sẽ bảo vệ khoá ký của bạn và đảm bảo rằng các ứng dụng của bạn được ký chính xác và có thể nhận bản cập nhật trong suốt thời gian hoạt động. Tuy nhiên, nếu quyết định tự quản lý khoá ký ứng dụng, bạn nên lưu ý một số điều sau.

Lưu ý khi ký

Bạn nên ký ứng dụng bằng chính chứng chỉ đó trong suốt thời gian hoạt động dự kiến. Có một số lý do để bạn nên làm như vậy:

  • Nâng cấp ứng dụng: Khi hệ thống đang cài đặt một bản cập nhật cho ứng dụng, hệ thống sẽ so sánh (các) chứng chỉ trong phiên bản mới với các chứng chỉ trong phiên bản hiện có. Hệ thống cho phép cập nhật nếu các chứng chỉ trùng khớp. Nếu ký phiên bản mới bằng một chứng chỉ khác, bạn phải chỉ định một tên gói khác cho ứng dụng — trong trường hợp này, người dùng cài đặt phiên bản mới đó là một ứng dụng hoàn toàn mới.
  • Mô-đun ứng dụng: Android cho phép các APK do cùng một chứng chỉ ký chạy trong cùng một quy trình, nếu các ứng dụng yêu cầu, để hệ thống coi các ứng dụng đó như một ứng dụng duy nhất. Bằng cách này, bạn có thể triển khai ứng dụng của mình trong các mô-đun và người dùng có thể tự cập nhật từng mô-đun.
  • Chia sẻ mã/dữ liệu thông qua các quyền: Android cung cấp tính năng thực thi quyền theo chữ ký để một ứng dụng có thể cung cấp chức năng cho một ứng dụng khác được ký bằng một chứng chỉ đã định. Bằng cách ký nhiều APK với cùng một chứng chỉ và sử dụng các tuỳ chọn kiểm tra quyền dựa trên chữ ký, các ứng dụng của bạn có thể chia sẻ mã và dữ liệu một cách an toàn.

Nếu bạn dự định hỗ trợ nâng cấp cho một ứng dụng, hãy đảm bảo rằng khoá ký ứng dụng của bạn có thời hạn hiệu lực vượt quá thời gian tồn tại dự kiến của ứng dụng đó. Bạn nên sử dụng thời gian hiệu lực từ 25 năm trở lên. Khi thời gian có hiệu lực của khoá của bạn hết hạn, người dùng sẽ không thể nâng cấp lên các phiên bản ứng dụng mới một cách liền mạch được nữa.

Nếu bạn dự định phát hành ứng dụng trên Google Play, thì khoá bạn sử dụng để ký ứng dụng phải có thời hạn có hiệu lực kết thúc sau ngày 22 tháng 10 năm 2033. Google Play thực thi yêu cầu này để đảm bảo rằng người dùng có thể nâng cấp liền mạch các ứng dụng khi có các phiên bản mới.

Bảo mật khoá của bạn

Nếu bạn chọn tự quản lý và bảo mật khoá ký ứng dụng và kho khoá (thay vì chọn sử dụng Tính năng ký ứng dụng của Play ), thì việc bảo mật khoá ký ứng dụng là một yếu tố quan trọng quan trọng đối với cả bạn và người dùng. Nếu bạn cho phép người khác sử dụng khoá hoặc nếu bạn để kho khoá và mật khẩu của mình ở một vị trí không an toàn, nhờ đó bên thứ ba có thể tìm và sử dụng khoá-giá trị đó, danh tính tác giả của bạn và sự tin tưởng của người dùng bị xâm phạm.

Nếu một bên thứ ba cần quản lý để lấy khoá ký ứng dụng của bạn mà bạn không biết hoặc không cho phép, thì người đó có thể ký và phân phối các ứng dụng thay thế các ứng dụng xác thực của bạn hoặc làm hỏng các ứng dụng đó. Một người như vậy cũng có thể ký và phân phối ứng dụng theo danh tính của bạn để tấn công các ứng dụng khác hoặc chính hệ thống, hoặc làm hỏng hoặc đánh cắp dữ liệu người dùng.

Bạn cần có khoá riêng tư để ký tất cả các phiên bản ứng dụng sau này. Nếu bị mất hoặc để mất khoá, bạn sẽ không thể phát hành bản cập nhật cho ứng dụng hiện có được của mình. Bạn không thể tạo lại khoá đã tạo trước đây.

Danh tiếng của bạn với tư cách là một nhà phát triển phụ thuộc vào việc bảo mật khoá ký ứng dụng của bạn đúng cách mọi lúc, cho đến khi khoá hết hạn. Dưới đây là một số mẹo giúp bảo mật khoá của bạn:

  • Chọn mật khẩu mạnh cho kho khoá và khoá.
  • Không cung cấp hoặc cho bất kỳ ai mượn khoá riêng tư của bạn và đừng để những người trái phép biết kho khoá và mật khẩu khoá của bạn.
  • Lưu giữ tệp kho khoá có chứa khoá riêng tư của bạn ở một nơi an toàn và bảo mật.

Nhìn chung, nếu bạn làm theo các biện pháp phòng ngừa thông thường khi tạo, sử dụng và lưu trữ khoá, thì khoá sẽ vẫn an toàn.

Xoá thông tin ký khỏi tệp dựng của bạn

Khi bạn tạo cấu hình ký, Android Studio sẽ thêm thông tin ký của bạn ở dạng văn bản thuần tuý vào tệp build.gradle của mô-đun. Nếu làm việc với một nhóm hoặc tìm nguồn mở cho mã của mình, bạn nên di chuyển thông tin nhạy cảm này ra khỏi các tệp bản dựng để người khác không thể dễ dàng truy cập được. Để thực hiện việc này, bạn nên tạo một tệp thuộc tính riêng để lưu trữ thông tin bảo mật và tham chiếu đến tệp đó trong các tệp bản dựng như sau:

  1. Tạo cấu hình ký và chỉ định cấu hình đó cho một hoặc nhiều loại bản dựng. Những hướng dẫn này giả định rằng bạn đã định cấu hình một cấu hình ký ứng dụng cho loại bản dựng phát hành, như mô tả trong phần Định cấu hình quy trình xây dựng để tự động ký ứng dụng của bạn ở trên.
  2. Tạo một tệp có tên là keystore.properties trong thư mục gốc của dự án. Tệp này phải chứa thông tin ký của bạn, như sau:
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. Trong tệp build.gradle của mô-đun, hãy thêm mã để tải tệp keystore.properties trước khối android {}.

    Groovy

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Lưu ý: Bạn có thể chọn lưu trữ tệp keystore.properties của mình ở một vị trí khác (ví dụ: trong thư mục mô-đun thay vì trong thư mục gốc của dự án, hoặc trên máy chủ bản dựng của bạn nếu bạn đang sử dụng công cụ tích hợp liên tục). Trong trường hợp đó, bạn nên sửa đổi mã ở trên để khởi chạy chính xác keystorePropertiesFile bằng cách sử dụng vị trí của tệp keystore.properties thực tế.

  4. Bạn có thể tham chiếu đến các thuộc tính được lưu trữ trong keystoreProperties bằng cú pháp keystoreProperties['propertyName']. Sửa đổi khối signingConfigs của tệp build.gradle của mô-đun để tham chiếu thông tin ký của bản ghi được lưu trữ trong keystoreProperties bằng cú pháp này.

    Groovy

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            getByName("config") {
                keyAlias = keystoreProperties["keyAlias"]
                keyPassword = keystoreProperties["keyPassword"]
                storeFile = file(keystoreProperties["storeFile"])
                storePassword = keystoreProperties["storePassword"]
            }
        }
        ...
      }
  5. Mở cửa sổ công cụ Tạo biến thể và đảm bảo rằng bạn đã chọn loại bản dựng phát hành.
  6. Chọn một tuỳ chọn trong mục Tạo > Tạo (các) gói/ APK) để tạo APK hoặc gói ứng dụng cho bản phát hành. Bạn sẽ thấy dữ liệu đầu ra của bản dựng trong thư mục build/outputs/ cho mô-đun của mình.

Vì các tệp bản dựng của bạn không còn chứa thông tin nhạy cảm nên giờ đây, bạn có thể đưa các tệp này vào bộ điều khiển nguồn hoặc tải những tệp đó lên một cơ sở mã dùng chung. Hãy nhớ để đảm bảo an toàn cho tệp keystore.properties. Trong đó có thể bao gồm cả việc xoá dữ liệu đó khỏi hệ thống kiểm soát nguồn của bạn.