ที่เก็บคีย์เป็นใบรับรองจริงหรือเป็นชื่อแทนใบรับรอง?
หากฉันใช้นามแฝงอื่นในการลงนามแอปจะทำให้การอัปเดตในตลาดยุ่งหรือไม่ หรือฉันจะต้องลงนามแอปด้วยคีย์สโตร์อื่นเพื่อทำสิ่งต่างๆให้วุ่นวาย และข้อมูลภายใต้นามแฝงสามารถดูได้จากที่ไหน?
ที่เก็บคีย์เป็นใบรับรองจริงหรือเป็นชื่อแทนใบรับรอง?
หากฉันใช้นามแฝงอื่นในการลงนามแอปจะทำให้การอัปเดตในตลาดยุ่งหรือไม่ หรือฉันจะต้องลงนามแอปด้วยคีย์สโตร์อื่นเพื่อทำสิ่งต่างๆให้วุ่นวาย และข้อมูลภายใต้นามแฝงสามารถดูได้จากที่ไหน?
คำตอบ:
ไฟล์ที่เก็บคีย์ที่สร้างโดยKeytool จะเก็บคีย์ส่วนตัวและคีย์สาธารณะคู่กัน แต่ละคู่หรือรายการที่จัดเก็บในที่เก็บคีย์จะอ้างอิงโดยนามแฝงที่ไม่ซ้ำกัน โดยสรุป:
รายการคีย์สโตร์ = ส่วนตัว + คู่คีย์สาธารณะ = ระบุโดยนามแฝง
ที่เก็บคีย์ปกป้องคีย์ส่วนตัวแต่ละคีย์ด้วยรหัสผ่านของแต่ละบุคคลและยังปกป้องความสมบูรณ์ของที่เก็บคีย์ทั้งหมดด้วยรหัสผ่าน (อาจแตกต่างกัน)
ตัวอย่างเช่นเมื่อคุณลงนามแอปพลิเคชัน Android โดยใช้อ็อพชัน Export Signed Application Package ของเครื่องมือ Eclipse Android ระบบจะขอให้คุณเลือกที่เก็บคีย์ก่อนจากนั้นขอให้เลือกนามแฝง / รายการ / คู่เดียวจากที่เก็บคีย์นั้น หลังจากระบุรหัสผ่านสำหรับทั้งที่เก็บคีย์และนามแฝงที่เลือกแล้วแอปจะได้รับการลงชื่อและคีย์สาธารณะ (ใบรับรอง) สำหรับนามแฝงนั้นจะฝังอยู่ใน APK
ตอนนี้เพื่อตอบคำถามของคุณคุณสามารถปล่อยการอัปเดตสำหรับแอปพลิเคชันที่ลงนามด้วยนามแฝง 'foo' โดยลงชื่ออัปเดตอีกครั้งด้วยนามแฝงเดียวกัน การสูญเสียที่เก็บคีย์ที่เก็บนามแฝงของคุณจะทำให้คุณไม่สามารถปล่อยแอปเวอร์ชันอัปเดตได้
อย่างไรก็ตามมีวิธีลงนามแอปด้วยนามแฝงใหม่ แต่เกี่ยวข้องกับการโคลนนามแฝงที่มีอยู่ในที่เก็บคีย์โดยใช้keytool -keyclone :
สร้างรายการที่เก็บคีย์ใหม่ซึ่งมีคีย์ส่วนตัวและห่วงโซ่ใบรับรองเดียวกันกับรายการดั้งเดิม
รายการต้นฉบับถูกระบุโดยนามแฝง (ซึ่งมีค่าเริ่มต้นเป็น "mykey" หากไม่ได้ระบุไว้) รายการ (ปลายทาง) ใหม่ถูกระบุโดย dest_alias หากไม่มีการระบุนามแฝงปลายทางที่บรรทัดคำสั่งผู้ใช้จะได้รับพร้อมต์
หากรหัสผ่านคีย์ส่วนตัวแตกต่างจากรหัสผ่านที่เก็บคีย์รายการจะถูกโคลนก็ต่อเมื่อมีการระบุรหัสผ่านที่ถูกต้อง นี่คือรหัสผ่านที่ใช้เพื่อป้องกันคีย์ส่วนตัวที่เกี่ยวข้องกับนามแฝง หากไม่มีการระบุรหัสผ่านคีย์ที่บรรทัดคำสั่งและรหัสผ่านคีย์ส่วนตัวแตกต่างจากรหัสผ่านที่เก็บคีย์ผู้ใช้จะได้รับพร้อมต์ คีย์ส่วนตัวในรายการโคลนอาจได้รับการป้องกันด้วยรหัสผ่านอื่นหากต้องการ หากไม่มีตัวเลือก -new ให้มาที่บรรทัดคำสั่งผู้ใช้จะได้รับแจ้งให้ป้อนรหัสผ่านของรายการใหม่ (และอาจเลือกที่จะปล่อยให้เป็นเช่นเดียวกับคีย์ส่วนตัวของรายการที่โคลน)
ข้อมูลมากกว่านี้:
http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html
http://developer.android.com/guide/publishing/app-signing.html