อิมเมจระบบปฏิบัติการ Android ใช้ลายเซ็นเข้ารหัสใน 2 ตำแหน่ง ดังนี้
- ต้องมีการรับรองไฟล์
.apkแต่ละไฟล์ภายในอิมเมจ เครื่องมือจัดการแพ็กเกจของ Android ใช้ลายเซ็น.apkใน 2 วิธี ดังนี้- เมื่อมีการแทนที่แอปพลิเคชัน จะต้องมีการรับรองด้วยคีย์เดียวกับแอปพลิเคชันเดิมเพื่อให้เข้าถึงข้อมูลของแอปพลิเคชันเดิมได้ ซึ่งเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
.apkและสำหรับการเขียนทับแอปของระบบด้วยเวอร์ชันที่ใหม่กว่าซึ่งติดตั้งไว้ใน/data - หากแอปพลิเคชัน 2 รายการขึ้นไปต้องการแชร์รหัสผู้ใช้ (เพื่อให้แชร์ข้อมูลและอื่นๆ ได้) จะต้องมีการรับรองด้วยคีย์เดียวกัน
- เมื่อมีการแทนที่แอปพลิเคชัน จะต้องมีการรับรองด้วยคีย์เดียวกับแอปพลิเคชันเดิมเพื่อให้เข้าถึงข้อมูลของแอปพลิเคชันเดิมได้ ซึ่งเป็นจริงทั้งสำหรับการอัปเดตแอปของผู้ใช้โดยการเขียนทับ
- แพ็กเกจการอัปเดต OTA ต้องมีการรับรองด้วยคีย์ใดคีย์หนึ่งที่ระบบคาดหวังไว้ ไม่เช่นนั้นกระบวนการติดตั้งจะปฏิเสธแพ็กเกจ
คีย์รุ่นที่เผยแพร่
Android Tree มี test-keys อยู่ใน build/target/product/security การสร้างอิมเมจระบบปฏิบัติการ Android โดยใช้ make จะรับรองไฟล์ .apk ทั้งหมดโดยใช้ test-keys เนื่องจาก test-keys เป็นที่ทราบกันโดยทั่วไป ทุกคนจึงสามารถรับรองไฟล์ .apk ของตนเองด้วยคีย์เดียวกันได้ ซึ่งอาจทำให้บุคคลเหล่านั้นสามารถแทนที่หรือจี้แอปของระบบที่สร้างไว้ในอิมเมจระบบปฏิบัติการของคุณ ด้วยเหตุนี้ คุณจึงต้องรับรองอิมเมจระบบปฏิบัติการ Android ที่เผยแพร่หรือทำให้ใช้งานได้แบบสาธารณะด้วย คีย์รุ่นที่เผยแพร่ ชุดพิเศษที่คุณเท่านั้นที่มีสิทธิ์เข้าถึง
หากต้องการสร้างคีย์รุ่นที่เผยแพร่ชุดที่ไม่ซ้ำกันของคุณเอง ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของ Android Tree
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'mkdir ~/.android-certsfor x in releasekey platform shared media networkstack; do \ ./development/tools/make_key ~/.android-certs/$x "$subject"; \ done
คุณควรเปลี่ยน $subject เพื่อแสดงข้อมูลขององค์กร คุณสามารถใช้ไดเรกทอรีใดก็ได้ แต่โปรดเลือกตำแหน่งที่มีการสำรองข้อมูลและปลอดภัย ผู้ให้บริการบางรายเลือกที่จะเข้ารหัสคีย์ส่วนตัวด้วยพาสเฟรสที่รัดกุมและจัดเก็บคีย์ที่เข้ารหัสไว้ในการควบคุมแหล่งที่มา ส่วนรายอื่นๆ จะจัดเก็บคีย์รุ่นที่เผยแพร่ไว้ที่อื่นทั้งหมด เช่น ในคอมพิวเตอร์ที่แยกออกจากเครือข่าย
หากต้องการสร้างอิมเมจรุ่นที่เผยแพร่ ให้ใช้คำสั่งต่อไปนี้
make distsign_target_files_apks \ -o \ # explained in the next section --default_key_mappings ~/.android-certs out/dist/*-target_files-*.zip \ signed-target_files.zip
สคริปต์ sign_target_files_apks จะใช้ไฟล์เป้าหมาย .zip เป็นอินพุตและสร้างไฟล์เป้าหมาย .zip ใหม่ซึ่งไฟล์ .apk ทั้งหมดได้รับการรับรองด้วยคีย์ใหม่ คุณจะพบอิมเมจที่รับรองใหม่ได้ใน IMAGES/ ใน signed-target_files.zip
รับรองแพ็กเกจ OTA
คุณสามารถแปลงไฟล์เป้าหมาย zip ที่รับรองแล้วเป็น zip การอัปเดต OTA ที่รับรองแล้วได้โดยใช้ขั้นตอนต่อไปนี้
ota_from_target_files \
-k (--package_key)
signed-target_files.zip \
signed-ota_update.zip
ลายเซ็นและการโหลดด้านข้าง
การโหลดด้านข้างไม่ได้ข้ามกลไกการยืนยันลายเซ็นแพ็กเกจปกติของการกู้คืน โดยก่อนที่จะติดตั้งแพ็กเกจ การกู้คืนจะยืนยันว่าแพ็กเกจมีการรับรองด้วยคีย์ส่วนตัวคีย์ใดคีย์หนึ่งที่ตรงกับคีย์สาธารณะที่จัดเก็บไว้ในพาร์ติชันการกู้คืน เช่นเดียวกับแพ็กเกจที่ส่งผ่านทางอากาศ
โดยปกติแล้ว ระบบหลักจะยืนยันแพ็กเกจการอัปเดตที่ได้รับจากระบบหลัก 2 ครั้ง ครั้งแรกโดยระบบหลักโดยใช้วิธี RecoverySystem.verifyPackage() ใน Android API และอีกครั้งโดยการกู้คืน API ของ RecoverySystem จะตรวจสอบลายเซ็นกับคีย์สาธารณะ
ที่จัดเก็บไว้ในระบบหลักในไฟล์ /system/etc/security/otacerts.zip
(โดยค่าเริ่มต้น) การกู้คืนจะตรวจสอบลายเซ็นกับคีย์สาธารณะที่จัดเก็บไว้ใน RAM disk ของพาร์ติชันการกู้คืนในไฟล์ /res/keys
โดยค่าเริ่มต้น ไฟล์เป้าหมาย .zip ที่สร้างโดยบิลด์จะตั้งค่าใบรับรอง OTA ให้ตรงกับคีย์ทดสอบ ในอิมเมจที่เผยแพร่แล้ว คุณต้องใช้ใบรับรองอื่นเพื่อให้อุปกรณ์ยืนยันความถูกต้องของแพ็กเกจการอัปเดตได้ การส่งแฟล็ก -o ไปยัง sign_target_files_apks ดังที่แสดงในส่วนก่อนหน้า จะแทนที่ใบรับรองคีย์ทดสอบด้วยใบรับรองคีย์รุ่นที่เผยแพร่จากไดเรกทอรีใบรับรอง
โดยปกติแล้ว อิมเมจระบบและอิมเมจการกู้คืนจะจัดเก็บคีย์สาธารณะ OTA ชุดเดียวกัน การเพิ่มคีย์ลงในชุดคีย์การกู้คืน เท่านั้น จะทำให้คุณสามารถรับรองแพ็กเกจที่ติดตั้งได้ผ่านการโหลดด้านข้างเท่านั้น (โดยถือว่ากลไกการดาวน์โหลดการอัปเดตของระบบหลักทำการยืนยันกับ otacerts.zip อย่างถูกต้อง) คุณสามารถระบุคีย์เพิ่มเติมที่จะรวมไว้ในการกู้คืนเท่านั้นได้โดยการตั้งค่าตัวแปร PRODUCT_EXTRA_RECOVERY_KEYS ในการกำหนดผลิตภัณฑ์ ดังนี้
vendor/yoyodyne/tardis/products/tardis.mk
[...] PRODUCT_EXTRA_RECOVERY_KEYS := vendor/yoyodyne/security/tardis/sideload
ซึ่งรวมถึงคีย์สาธารณะ vendor/yoyodyne/security/tardis/sideload.x509.pem ในไฟล์คีย์การกู้คืนเพื่อให้ติดตั้งแพ็กเกจที่รับรองด้วยคีย์ดังกล่าวได้ อย่างไรก็ตาม ระบบจะไม่รวมคีย์เพิ่มเติมไว้ใน otacerts.zip ดังนั้น
ระบบที่ยืนยันแพ็กเกจที่ดาวน์โหลดอย่างถูกต้องจะไม่เรียกใช้การกู้คืนสำหรับ
แพ็กเกจที่รับรองด้วยคีย์นี้
ใบรับรองและคีย์ส่วนตัว
คีย์แต่ละคีย์จะมาในรูปแบบ 2 ไฟล์ ได้แก่ ใบรับรอง ซึ่งมี นามสกุล .x509.pem และ คีย์ส่วนตัว ซึ่งมีนามสกุล .pk8 คุณควรเก็บคีย์ส่วนตัวไว้เป็นความลับและต้องใช้คีย์นี้ในการรับรองแพ็กเกจ คีย์เองอาจได้รับการปกป้องด้วยรหัสผ่าน ในทางตรงกันข้าม ใบรับรองจะมีคีย์เพียงครึ่งหนึ่งที่เป็นสาธารณะเท่านั้น คุณจึงเผยแพร่ใบรับรองได้อย่างกว้างขวาง โดยใช้เพื่อยืนยันว่าแพ็กเกจได้รับการรับรองด้วยคีย์ส่วนตัวที่เกี่ยวข้อง
การสร้าง Android มาตรฐานใช้คีย์ 5 คีย์ ซึ่งทั้งหมดอยู่ใน
build/target/product/security
- testkey
- คีย์เริ่มต้นทั่วไปสำหรับแพ็กเกจที่ไม่ได้ระบุคีย์ไว้เป็นอย่างอื่น
- platform
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของแพลตฟอร์มหลัก
- shared
- คีย์ทดสอบสำหรับสิ่งที่แชร์ในกระบวนการบ้าน/รายชื่อติดต่อ
- media
- คีย์ทดสอบสำหรับแพ็กเกจที่เป็นส่วนหนึ่งของระบบสื่อ/การดาวน์โหลด
แพ็กเกจแต่ละแพ็กเกจจะระบุคีย์ใดคีย์หนึ่งเหล่านี้โดยการตั้งค่า LOCAL_CERTIFICATE ในไฟล์ Android.mk (ระบบจะใช้ testkey หากไม่ได้ตั้งค่าตัวแปรนี้) นอกจากนี้ คุณยังระบุคีย์อื่นทั้งหมดได้ด้วยเส้นทาง เช่น
device/yoyodyne/apps/SpecialApp/Android.mk
[...] LOCAL_CERTIFICATE := device/yoyodyne/security/special
ตอนนี้บิลด์จะใช้คีย์ device/yoyodyne/security/special.{x509.pem,pk8}
เพื่อรับรอง SpecialApp.apk การสร้างจะใช้ได้เฉพาะคีย์ส่วนตัวที่
ไม่ ได้รับการปกป้องด้วยรหัสผ่าน
ตัวเลือกการรับรองขั้นสูง
การแทนที่คีย์ App Signing
สคริปต์การรับรอง sign_target_files_apks จะทำงานกับไฟล์เป้าหมายที่สร้างขึ้นสำหรับบิลด์ ข้อมูลทั้งหมดเกี่ยวกับใบรับรองและคีย์ส่วนตัวที่ใช้ในเวลาบิลด์จะรวมอยู่ในไฟล์เป้าหมาย เมื่อเรียกใช้สคริปต์การรับรองเพื่อรับรองสำหรับการเผยแพร่ คุณจะแทนที่คีย์การรับรองได้โดยอิงตามชื่อคีย์หรือชื่อ APK
ใช้แฟล็ก --key_mapping และ --default_key_mappings เพื่อระบุการแทนที่คีย์โดยอิงตามชื่อคีย์ ดังนี้
- แฟล็ก
--key_mapping src_key=dest_keyจะระบุการแทนที่คีย์ทีละคีย์ - แฟล็ก
--default_key_mappings dirจะระบุ ไดเรกทอรีที่มีคีย์ 5 คีย์เพื่อแทนที่คีย์ทั้งหมดในbuild/target/product/securityซึ่งเทียบเท่ากับการใช้--key_mapping5 ครั้งเพื่อระบุการแมป
build/target/product/security/testkey = dir/releasekey build/target/product/security/platform = dir/platform build/target/product/security/shared = dir/shared build/target/product/security/media = dir/media build/target/product/security/networkstack = dir/networkstack
ใช้แฟล็ก
--extra_apks apk_name1,apk_name2,...=keyเพื่อระบุการแทนที่คีย์การรับรองโดยอิงตามชื่อ APK หากเว้นว่าง key ไว้ สคริปต์จะถือว่า APK ที่ระบุได้รับการรับรองล่วงหน้า
สำหรับผลิตภัณฑ์ tardis ที่สมมติขึ้น คุณต้องมีคีย์ที่ได้รับการปกป้องด้วยรหัสผ่าน 6 คีย์ ได้แก่ 5 คีย์เพื่อแทนที่คีย์ 5 คีย์ใน build/target/product/security และอีก 1 คีย์เพื่อแทนที่คีย์เพิ่มเติม device/yoyodyne/security/special ที่ SpecialApp ต้องการในตัวอย่างด้านบน หากคีย์อยู่ในไฟล์ต่อไปนี้
vendor/yoyodyne/security/tardis/releasekey.x509.pem vendor/yoyodyne/security/tardis/releasekey.pk8 vendor/yoyodyne/security/tardis/platform.x509.pem vendor/yoyodyne/security/tardis/platform.pk8 vendor/yoyodyne/security/tardis/shared.x509.pem vendor/yoyodyne/security/tardis/shared.pk8 vendor/yoyodyne/security/tardis/media.x509.pem vendor/yoyodyne/security/tardis/media.pk8 vendor/yoyodyne/security/tardis/networkstack.x509.pem vendor/yoyodyne/security/tardis/networkstack.pk8 vendor/yoyodyne/security/special.x509.pem vendor/yoyodyne/security/special.pk8 # NOT password protected vendor/yoyodyne/security/special-release.x509.pem vendor/yoyodyne/security/special-release.pk8 # password protected
จากนั้นคุณจะรับรองแอปทั้งหมดดังนี้
./build/make/tools/releasetools/sign_target_files_apks \
--default_key_mappings vendor/yoyodyne/security/tardis \
--key_mapping vendor/yoyodyne/security/special=vendor/yoyodyne/security/special-release \
--extra_apks PresignedApp= \
-o tardis-target_files.zip \
signed-tardis-target_files.zip
ซึ่งจะแสดงผลลัพธ์ต่อไปนี้
Enter password for vendor/yoyodyne/security/special-release key>
Enter password for vendor/yoyodyne/security/tardis/networkstack key>
Enter password for vendor/yoyodyne/security/tardis/media key>
Enter password for vendor/yoyodyne/security/tardis/platform key>
Enter password for vendor/yoyodyne/security/tardis/releasekey key>
Enter password for vendor/yoyodyne/security/tardis/shared key>
signing: Phone.apk (vendor/yoyodyne/security/tardis/platform)
signing: Camera.apk (vendor/yoyodyne/security/tardis/media)
signing: NetworkStack.apk (vendor/yoyodyne/security/tardis/networkstack)
signing: Special.apk (vendor/yoyodyne/security/special-release)
signing: Email.apk (vendor/yoyodyne/security/tardis/releasekey)
[...]
signing: ContactsProvider.apk (vendor/yoyodyne/security/tardis/shared)
signing: Launcher.apk (vendor/yoyodyne/security/tardis/shared)
NOT signing: PresignedApp.apk
(skipped due to special cert string)
rewriting SYSTEM/build.prop:
replace: ro.build.description=tardis-user Eclair ERC91 15449 test-keys
with: ro.build.description=tardis-user Eclair ERC91 15449 release-keys
replace: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/test-keys
with: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/release-keys
signing: framework-res.apk (vendor/yoyodyne/security/tardis/platform)
rewriting RECOVERY/RAMDISK/default.prop:
replace: ro.build.description=tardis-user Eclair ERC91 15449 test-keys
with: ro.build.description=tardis-user Eclair ERC91 15449 release-keys
replace: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/test-keys
with: ro.build.fingerprint=generic/tardis/tardis/tardis:Eclair/ERC91/15449:user/release-keys
using:
vendor/yoyodyne/security/tardis/releasekey.x509.pem
for OTA package verification
done.
หลังจากแจ้งให้ผู้ใช้ป้อนรหัสผ่านสำหรับคีย์ทั้งหมดที่ได้รับการปกป้องด้วยรหัสผ่านแล้ว สคริปต์จะรับรองไฟล์ APK ทั้งหมดในไฟล์เป้าหมาย .zip อินพุตอีกครั้งด้วยคีย์รุ่นที่เผยแพร่ ก่อนที่จะเรียกใช้คำสั่ง คุณยังตั้งค่าตัวแปรสภาพแวดล้อม ANDROID_PW_FILE เป็นชื่อไฟล์ชั่วคราวได้ด้วย จากนั้นสคริปต์จะเรียกใช้โปรแกรมแก้ไขเพื่อให้คุณป้อนรหัสผ่านสำหรับคีย์ทั้งหมด (วิธีนี้อาจสะดวกกว่าในการป้อนรหัสผ่าน)
การแทนที่คีย์การรับรอง APEX
Android 10 ขอแนะนำ รูปแบบไฟล์ APEX สำหรับการติดตั้ง โมดูลระบบระดับล่าง ดังที่อธิบายไว้ใน การรับรอง APEX ไฟล์ APEX แต่ละไฟล์จะได้รับการ รับรองด้วยคีย์ 2 คีย์ ได้แก่ คีย์หนึ่งสำหรับอิมเมจระบบไฟล์ขนาดเล็กภายใน APEX และอีก คีย์หนึ่งสำหรับ APEX ทั้งหมด
เมื่อรับรองสำหรับการเผยแพร่ ระบบจะแทนที่คีย์การรับรอง 2 คีย์สำหรับไฟล์ APEX ด้วยคีย์รุ่นที่เผยแพร่ คุณระบุคีย์เพย์โหลดระบบไฟล์ได้ด้วยแฟล็ก --extra_apex_payload และระบุคีย์การรับรองไฟล์ APEX ทั้งหมดได้ด้วยแฟล็ก --extra_apks
สำหรับผลิตภัณฑ์ tardis ให้สมมติว่าคุณมีการกำหนดค่าคีย์ต่อไปนี้สำหรับไฟล์ APEX com.android.conscrypt.apex, com.android.media.apex และ com.android.runtime.release.apex
name="com.android.conscrypt.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" name="com.android.media.apex" public_key="PRESIGNED" private_key="PRESIGNED" container_certificate="PRESIGNED" container_private_key="PRESIGNED" name="com.android.runtime.release.apex" public_key="vendor/yoyodyne/security/testkeys/com.android.runtime.avbpubkey" private_key="vendor/yoyodyne/security/testkeys/com.android.runtime.pem" container_certificate="vendor/yoyodyne/security/testkeys/com.google.android.runtime.release_container.x509.pem" container_private_key="vendor/yoyodyne/security/testkeys/com.google.android.runtime.release_container.pk8"
และคุณมีไฟล์ต่อไปนี้ที่มีคีย์รุ่นที่เผยแพร่
vendor/yoyodyne/security/runtime_apex_container.x509.pem vendor/yoyodyne/security/runtime_apex_container.pk8 vendor/yoyodyne/security/runtime_apex_payload.pem
คำสั่งต่อไปนี้จะเขียนทับคีย์การรับรองสำหรับ com.android.runtime.release.apex และ com.android.tzdata.apex ระหว่างการรับรองรุ่นที่เผยแพร่ โดยเฉพาะอย่างยิ่ง com.android.runtime.release.apex จะได้รับการรับรองด้วยคีย์รุ่นที่เผยแพร่ที่ระบุ (runtime_apex_container สำหรับไฟล์ APEX และ runtime_apex_payload สำหรับเพย์โหลดอิมเมจไฟล์)
ระบบจะถือว่า com.android.tzdata.apex ได้รับการรับรองล่วงหน้า ส่วนไฟล์ APEX อื่นๆ ทั้งหมดจะได้รับการจัดการโดยการกำหนดค่าเริ่มต้นตามที่ระบุไว้ในไฟล์เป้าหมาย
./build/make/tools/releasetools/sign_target_files_apks \
--default_key_mappings vendor/yoyodyne/security/tardis \
--extra_apks com.android.runtime.release.apex=vendor/yoyodyne/security/runtime_apex_container \
--extra_apex_payload_key com.android.runtime.release.apex=vendor/yoyodyne/security/runtime_apex_payload.pem \
--extra_apks com.android.media.apex= \
--extra_apex_payload_key com.android.media.apex= \
-o tardis-target_files.zip \
signed-tardis-target_files.zip
การเรียกใช้คำสั่งด้านบนจะแสดงบันทึกต่อไปนี้
[...]
signing: com.android.runtime.release.apex container (vendor/yoyodyne/security/runtime_apex_container)
: com.android.runtime.release.apex payload (vendor/yoyodyne/security/runtime_apex_payload.pem)
NOT signing: com.android.conscrypt.apex
(skipped due to special cert string)
NOT signing: com.android.media.apex
(skipped due to special cert string)
[...]
ตัวเลือกอื่นๆ
สคริปต์การรับรอง sign_target_files_apks จะเขียนคำอธิบายบิลด์และฟิงเกอร์ปรินต์ใหม่ในไฟล์พร็อพเพอร์ตี้บิลด์เพื่อแสดงว่าบิลด์เป็นแบบที่รับรองแล้ว แฟล็ก --tag_changes จะควบคุมการแก้ไขที่จะทำกับลายนิ้วมือ เรียกใช้สคริปต์ด้วย -h เพื่อดูเอกสารประกอบเกี่ยวกับแฟล็กทั้งหมด
สร้างคีย์ด้วยตนเอง
Android ใช้คีย์ RSA ขนาด 2048 บิตที่มีเลขชี้กำลังสาธารณะเป็น 3 คุณสามารถสร้าง คู่ใบรับรอง/คีย์ส่วนตัวได้โดยใช้เครื่องมือ openssl จาก openssl.org ดังนี้
# generate RSA keyopenssl genrsa -3 -out temp.pem 2048Generating RSA private key, 2048 bit long modulus ....+++ .....................+++ e is 3 (0x3) # create a certificate with the public part of the keyopenssl req -new -x509 -key temp.pem -out releasekey.x509.pem -days 10000 -subj '/C=US/ST=California/L=San Narciso/O=Yoyodyne, Inc./OU=Yoyodyne Mobility/CN=Yoyodyne/emailAddress=yoyodyne@example.com'# create a PKCS#8-formatted version of the private keyopenssl pkcs8 -in temp.pem -topk8 -outform DER -out releasekey.pk8 -nocrypt# securely delete the temp.pem fileshred --remove temp.pem
คำสั่ง openssl pkcs8 ด้านบนจะสร้างไฟล์ .pk8 ที่ ไม่มี รหัสผ่าน ซึ่งเหมาะสำหรับใช้กับระบบบิลด์ หากต้องการสร้างไฟล์ .pk8 ที่ปลอดภัยด้วยรหัสผ่าน (ซึ่งคุณควรทำสำหรับคีย์รุ่นที่เผยแพร่จริงทั้งหมด) ให้แทนที่อาร์กิวเมนต์ -nocrypt ด้วย -passout stdin จากนั้น openssl จะเข้ารหัสคีย์ส่วนตัวด้วยรหัสผ่านที่อ่านจากอินพุตมาตรฐาน ระบบจะไม่พิมพ์ข้อความแจ้ง ดังนั้นหากอินพุตมาตรฐานเป็นเทอร์มินัล โปรแกรมจะปรากฏว่าค้างอยู่ ทั้งที่จริงแล้วโปรแกรมเพียงแค่รอให้คุณป้อนรหัสผ่าน คุณสามารถใช้ค่าอื่นๆ สำหรับอาร์กิวเมนต์ -passout เพื่ออ่านรหัสผ่านจากตำแหน่งอื่นๆ ได้ โปรดดูรายละเอียดใน
เอกสารประกอบของ
openssl
ไฟล์กลาง temp.pem มีคีย์ส่วนตัวที่ไม่มีการป้องกันด้วยรหัสผ่านใดๆ ดังนั้นโปรดกำจัดไฟล์นี้อย่างรอบคอบเมื่อสร้างคีย์รุ่นที่เผยแพร่ โดยเฉพาะอย่างยิ่ง ยูทิลิตี GNUshred อาจไม่มีประสิทธิภาพในระบบไฟล์เครือข่ายหรือระบบไฟล์ที่บันทึกการเปลี่ยนแปลง คุณสามารถใช้ไดเรกทอรีการทำงานที่อยู่ใน RAM disk (เช่น พาร์ติชัน tmpfs) เมื่อสร้างคีย์เพื่อให้แน่ใจว่าระบบจะไม่เปิดเผยไฟล์กลางโดยไม่ได้ตั้งใจ
สร้างไฟล์อิมเมจ
เมื่อมี signed-target_files.zip แล้ว คุณต้องสร้างอิมเมจเพื่อให้ใส่ลงในอุปกรณ์ได้
หากต้องการสร้างอิมเมจที่รับรองแล้วจากไฟล์เป้าหมาย ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของ Android Tree
img_from_target_files signed-target_files.zip signed-img.zip
signed-img.zip ที่ได้จะมีไฟล์ .img ทั้งหมด
หากต้องการโหลดอิมเมจลงในอุปกรณ์ ให้ใช้ fastboot ดังนี้
fastboot update signed-img.zip