ไฟล์ที่เก็บคีย์ Android คืออะไรและใช้ทำอะไร


128

นี่เป็นคำถามทั่วไป แต่โดยเฉพาะฉันสนใจที่จะใช้กับ Android ไฟล์ที่เก็บคีย์คืออะไรและใช้ทำอะไร

แอปพลิเคชัน Android หลายแอปพลิเคชันสามารถใช้ที่เก็บคีย์เดียวกันเพื่อลงนามแอปพลิเคชันของตนได้ ("ลงชื่อ" เป็น. apk หมายความว่าอย่างไร) และผลกระทบ (ถ้ามี) ของสิ่งนี้คืออะไร


1
ดูเหมือนคุณจะรวมสองหัวข้อ อันดับแรกคือที่เก็บคีย์และอันดับที่สองคือการลงนาม APK ยังเห็นนิโค Elenkov ของAndroid การรักษาความปลอดภัย Internals: การในเชิงลึกคู่มือเพื่อ Android ของสถาปัตยกรรมความปลอดภัย
jww

คำตอบ:


130

คำตอบที่ฉันจะให้ก็คือไฟล์ที่เก็บคีย์คือการรับรองความถูกต้องของตัวคุณเองกับใครก็ตามที่ถาม ไม่ได้ จำกัด เฉพาะการเซ็นชื่อไฟล์. apk คุณสามารถใช้เพื่อจัดเก็บใบรับรองส่วนบุคคลลงนามข้อมูลที่จะส่งและการรับรองความถูกต้องที่หลากหลาย

ในแง่ของสิ่งที่คุณทำกับ Android และอาจเป็นสิ่งที่คุณกำลังมองหาเนื่องจากคุณพูดถึงการลงนาม apk นั่นคือใบรับรองของคุณ คุณกำลังสร้างแบรนด์แอปพลิเคชันของคุณด้วยข้อมูลประจำตัวของคุณ คุณสามารถสร้างแบรนด์แอปพลิเคชันหลายรายการโดยใช้คีย์เดียวกันในความเป็นจริงขอแนะนำให้คุณใช้ใบรับรองเดียวเพื่อสร้างแบรนด์แอปพลิเคชันหลายรายการ ติดตามได้ง่ายขึ้นว่าแอปพลิเคชันใดเป็นของคุณ

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยนัย ฉันคิดว่านั่นหมายความว่าไม่มีใครนอกจากผู้ถือใบรับรองของคุณเท่านั้นที่สามารถอัปเดตใบสมัครของคุณได้ นั่นหมายความว่าหากคุณปล่อยมันเข้าสู่ป่าสูญเสียใบรับรองที่คุณใช้ในการลงนามในแอปพลิเคชันคุณจะไม่สามารถเผยแพร่การอัปเดตได้ดังนั้นโปรดเก็บใบรับรองนั้นไว้อย่างปลอดภัยและสำรองไว้หากจำเป็น

แต่นอกเหนือจากการลงนาม apks เพื่อเผยแพร่ในป่าคุณสามารถใช้เพื่อตรวจสอบอุปกรณ์ของคุณกับเซิร์ฟเวอร์ผ่าน SSL ได้หากคุณต้องการ (รวมถึง Android ที่เกี่ยวข้องด้วย) ท่ามกลางฟังก์ชันอื่น ๆ


2
ตอบได้ดีมาก. ควรสังเกตด้วยว่าคุณต้องมีไฟล์ที่เก็บคีย์หากคุณจะใช้ "ข้อมูลพุช" ในแอปของคุณ!
KapteinMarshall

เครื่อง Keystore เฉพาะหรือไม่? หรือใช้ในเครื่องไหนก็ได้เพื่ออัพเดทแอพของเรา ??
Yawar

8
คำอธิบายที่ดี คุณช่วยอธิบายได้ไหมว่าทำไมเราถึงต้องการ KeyStorePassword, Key alias, KeyPassword ดูเหมือนจะซ้ำซ้อนที่จะมีสามปุ่ม
ARK

18

Android Market กำหนดให้คุณต้องลงนามแอปทั้งหมดที่คุณเผยแพร่ด้วยใบรับรองโดยใช้กลไกคีย์สาธารณะ / ส่วนตัว (ใบรับรองจะลงนามด้วยคีย์ส่วนตัวของคุณ) สิ่งนี้มอบชั้นความปลอดภัยที่ป้องกันไม่ให้ผู้โจมตีระยะไกลส่งการอัปเดตที่เป็นอันตรายไปยังแอปพลิเคชันของคุณออกสู่ตลาด (การอัปเดตทั้งหมดต้องลงนามด้วยคีย์เดียวกัน)

จากคู่มือการลงนามแอปของไซต์นักพัฒนาซอฟต์แวร์ Android:

โดยทั่วไปกลยุทธ์ที่แนะนำสำหรับนักพัฒนาซอฟต์แวร์ทั้งหมดคือการลงนามแอปพลิเคชันทั้งหมดของคุณด้วยใบรับรองเดียวกันตลอดอายุการใช้งานที่คาดไว้ของแอปพลิเคชันของคุณ มีสาเหตุหลายประการที่คุณควรทำ ...

การใช้คีย์เดียวกันมีประโยชน์บางประการประการหนึ่งคือการแชร์ข้อมูลระหว่างแอปพลิเคชันที่เซ็นชื่อด้วยคีย์เดียวกันได้ง่ายขึ้น อีกประการหนึ่งคือการอนุญาตให้แอปหลายแอปที่เซ็นชื่อด้วยคีย์เดียวกันทำงานในกระบวนการเดียวกันได้ดังนั้นนักพัฒนาซอฟต์แวร์จึงสามารถสร้างแอปพลิเคชันแบบ "โมดูลาร์" เพิ่มเติมได้


10

คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนการลงนามได้จากเอกสารทางการของ Android ที่นี่: http://developer.android.com/guide/publishing/app-signing.html

ได้คุณสามารถลงนามแอปพลิเคชันต่างๆด้วยคีย์สโตร์เดียวกันได้ แต่คุณต้องจำสิ่งสำคัญอย่างหนึ่ง: หากคุณเผยแพร่แอปบน Play Store คุณต้องเซ็นชื่อด้วยใบรับรองที่ไม่ใช่การแก้ไขข้อบกพร่อง และหากวันหนึ่งคุณต้องการเผยแพร่การอัปเดตสำหรับแอปนี้ที่เก็บคีย์ที่ใช้ในการลงนาม apk จะต้องเหมือนกัน มิฉะนั้นคุณจะไม่สามารถโพสต์การอัปเดตของคุณได้


ไม่นี่เป็นความผิด ที่เก็บคีย์ที่คุณใช้ในการลงนาม apk อาจแตกต่างกัน แต่คีย์ที่คุณใช้ในการลงนาม apk ต้องเหมือนกัน ไฟล์ที่เก็บคีย์เป็นเพียงไฟล์ที่ใช้จัดเก็บคีย์และรูปแบบใบรับรองคุณสามารถมีเอนทิตีคีย์หลายรายการในไฟล์ที่เก็บคีย์เดียวกันได้
zeleven

0

แนวคิดทั้งหมดของ keytool คือการลงนาม apk ของคุณด้วยตัวระบุเฉพาะที่ระบุแหล่งที่มาของ apk นั้น ไฟล์ที่เก็บคีย์ (จากสิ่งที่ฉันเข้าใจ) ใช้สำหรับการดีบักดังนั้น apk ของคุณจึงมีการทำงานของคีย์ทูลโดยไม่ต้องเซ็นชื่อ apk สำหรับการผลิต ใช่แล้วสำหรับวัตถุประสงค์ในการดีบักคุณควรจะสามารถลงนาม APK หลายตัวด้วยที่เก็บคีย์เดียว แต่เข้าใจว่าในการผลักดันไปสู่การใช้งานจริงคุณจะต้องมีเครื่องมือสำคัญที่ไม่ซ้ำกันเป็นตัวระบุสำหรับแต่ละ APK ที่คุณสร้าง


คุณไม่จำเป็นต้องลงนามในแอปเพื่อแก้จุดบกพร่องไม่ว่าจะในโปรแกรมจำลองหรือบนอุปกรณ์จริง
Marcus

ฉันไม่ได้หมายความว่าคุณต้องเซ็นชื่อเพื่อแก้ไขข้อบกพร่อง ... แต่คุณสามารถใช้ที่เก็บคีย์เป็นการทดสอบการใช้งานเครื่องมือของคุณ
Adam Storm

ฉันไม่คิดkeytoolว่าคุณหมายถึงอะไร keytool เป็นโปรแกรมจาวาที่ใช้ในการสร้างคีย์สโตร์
Otra

ใช่คุณพูดถูกคีย์ทูลไม่ใช่สิ่งที่ฉันหมายถึง ฉันเดาว่า 'กุญแจ' คือสิ่งที่ฉันหมายถึง ฉันแค่พยายามอธิบายให้ผู้ถามทราบว่าคุณสามารถมีคีย์ apk ส่วนกลางสำหรับการดีบักได้ แต่เมื่อเผยแพร่ apk แต่ละรายการจะต้องมีคีย์ที่ไม่ซ้ำกันสำหรับการแก้ไขและอัปเกรด
Adam Storm

พวกเขาไม่ต้องการคีย์ที่ไม่ซ้ำกันแม้ว่า ... คุณสามารถลงชื่อ APK หลายตัวด้วยคีย์ส่วนตัวเพียงอันเดียวซึ่งเป็นที่ต้องการให้คุณทำเช่นนั้น คุณนึกภาพการติดตาม 10 ใบรับรอง / คีย์ที่แตกต่างกันสำหรับ 10 แอพหรือไม่?
Otra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.