您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Android系統如何制作自定義簽名的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
1、簡介
應客戶要求為了是特殊定制的系統更具安全,系統ROM需要使用自己定義的簽名,還有一些特殊的場景也會更改系統的簽名比如在過cts認證測試的時候也會修改平臺簽名才能測試通過關于簽名的問題。
這是因為平臺默認的是test簽名.網上大多說簽名的都是app簽名而非平臺簽名。
test簽名這種類型的key只適用于開發階段,而且這種秘鑰是公開的,誰都可以使用。
當發布一款android產品,就需要另外給整個系統簽個名,防止被別人盜用。這種系統就是release版本的Android系統。
這里就簡單記錄下方法。
2、制作自己的平臺release簽名
要對Android系統進行簽名,需要生成四種類型的key文件。
a) releasekey
b) media
c) shared
d) platform
我們就拿platform 為例簡單介紹下生成過程。
1)進入/Android源碼根目錄/development/tools目錄。
2)使用make_key工具生成簽名文件
development/tools$ sh make_key platform
‘/C=CN/ST=ShanXi/L=Xi`an/O=Company/OU=Department/CN=banfeipeng/emailAddress=23333869@qq.com'
Enter password for ‘shared' (blank for none; password will be visible): mypassword <——- 設置你的密碼
creating shared.pk8 with no password
Generating RSA private key, 2048 bit long modulus
……………………………………..+++
………………+++
e is 65537 (0x10001)
3)make_key的參數介紹
這里要順便介紹下make_key的參數。第一個參數是要生成key的名字,第二個參數是關于你公司的信息。
key的名字很好理解,就是前面提到的4中類型的key,公司信息的參數比較多,它們的含義如下:
C —> Country Name (2 letter code)
ST —> State or Province Name (full name)
L —> Locality Name (eg, city)
O —> Organization Name (eg, company)
OU —> Organizational Unit Name (eg, section)
CN —> Common Name (eg, your name or your server's hostname)
emailAddress —> Contact email address
4)生成后的結果如下:
5)pk8是生成的私鑰,而*.x509.pem是公鑰,生成時兩者是成對出現的.
3、修改android平臺簽名為剛才修改的簽名文件
1.修改build/core/config.mk將:
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
else
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
endif
修改為:
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
else
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/XXXreleasekey
endif
2.將上面生成的簽名文件放到 build/target/product/security/XXX/目錄
3.修改external/sepolicy/keys.conf
補充知識:test.pk8 和 test.x509.pem轉換為 android studio 使用的 keystore 文件
我就廢話不多說了,還是直接看代碼吧!
set in_pk8="F:\chNet\sign_mstar9380\testkey.pk8" set in_x509_pem="F:\chNet\sign_mstar9380\testkey.x509.pem" set out_name=out.keystore.testkey set out_alias="mstar" set storePassword=12345678 set keyPassword=12345678 set tmp_file1=platform.p12 set tmp_file2=testkey.pem set openssl="D:\Program Files\Git\usr\bin\openssl.exe" set keytool="C:\Program Files\Java\jre1.8.0_191\bin\keytool.exe" ::使用 open ssl 將pk8 解密為 pem 文件, 此時生成一個testkey.pem 文件 %openssl% pkcs8 -inform DER -nocrypt -in %in_pk8% -out %tmp_file2% ::將兩個pem 文件導入platform.p12文件中, ::并設置 別名 testkey 和keypass 密碼:12345678 (別名和密碼可自定義)會新生成 platform.p12 %openssl% pkcs12 -export -in %in_x509_pem% -inkey %tmp_file2% -out %tmp_file1% -password pass:%keyPassword% -name %out_alias% ::使用keytool 將之前生成的platform.p12導入 testkey.jks 簽名中,并設置storepass密碼(12345678) ::需要正確提供keypass 密碼 ::此時即生成了需要的testkey.jks 簽名文件 %keytool% -importkeystore -deststorepass %storePassword% -destkeystore %out_name% -srckeystore %tmp_file1% -srcstoretype PKCS12 -srcstorepass %keyPassword% ::刪除臨時文件 del %tmp_file1% del %tmp_file2% ::查看生成的 簽名信息 %keytool% -list -v -keystore %out_name% pause
感謝各位的閱讀!關于“Android系統如何制作自定義簽名”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。