A. 大家有沒有發覺,android即便是使用了過期簽名的apk,也是可以安裝的。是不是在安裝時不檢查簽名的有效期
簽名有抄一個很重要作用就是防止程序發布後被篡改簽名一般用私鑰,私鑰簽名以後會生成harsh值序列,公鑰驗證的時候(手機上),會根據文件內容再生成一次harsh序列,如果和apk中的harsh序列相同,說明apk發布後沒有被篡改過。
Android在安裝某個應用時,提示程序未安裝由以下原因造成:
1. 手機已經安裝了一個包名相同的應用;
2. 當前手機操作系統不滿足程序包要求的系統版本;
3. 手機存儲空間不足;
4. 安裝包已經損壞。
解決辦法:
1. 查看本機是否有安裝,如果有直接卸載掉;
2. 查看一下程序包的版本,與當前手機是否一致;
3. 卸載手機一些無用或者很少用的應用,釋放手機存儲空間;
4. 重新下載安裝包 。
B. android 簽名 命令行 時間戳
……看起來只是簽名的有效期太短,試試看有效期設定為200年咯……
C. 安卓 簽名文件 過期
重新創建一個一模一樣的簽名私鑰!把日期加長!
D. Android簽名有什麼作用
平時我們的程序可以在模擬器上安裝並運行,是因為在應用程序開發期間,由於是以Debug面試進行編譯的,因此ADT根據會自動用默認的密鑰和證書來進行簽名,而在以發布模式編譯時,apk文件就不會得到自動簽名,這樣就需要進行手工簽名。給apk簽名可以帶來以下好處:1.、應用程序升級:如果你希望用戶無縫升級到新的版本,那麼你必須用同一個證書進行簽名。這是由於只有以同一個證書簽名,系統才會允許安裝升級的應用程序。如果你採用了不同的證書,那麼系統會要求你的應用程序採用不同的包名稱,在這種情況下相當於安裝了一個全新的應用程序。如果想升級應用程序,簽名證書要相同,包名稱要相同!2、應用程序模塊化:Android系統可以允許同一個證書簽名的多個應用程序在一個進程里運行,系統實際把他們作為一個單個的應用程序,此時就可以把我們的應用程序以模塊的方式進行部署,而用戶可以獨立的升級其中的一個模塊3、代碼或者數據共享:Android提供了基於簽名的許可權機制,那麼一個應用程序就可以為另一個以相同證書簽名的應用程序公開自己的功能。以同一個證書對多個應用程序進行簽名,利用基於簽名的許可權檢查,你就可以在應用程序間以安全的方式共享代碼和數據了。不同的應用程序之間,想共享數據,或者共享代碼,那麼要讓他們運行在同一個進程中,而且要讓他們用相同的證書簽名。
E. 安卓應用的簽名過期了會怎麼樣
會提示證書過期罷了
對正常使用沒有影響
F. Android簽名證書你知多少
使用android tools-Export Signed Application Package...導出時,會讓你選擇簽名用的keystore(證書信息都在這版個keystore文件里),選擇你權的keystore(如果還沒有,在這里也可以自己先創建一個,創建時選擇保存路徑,注意保存這個文件,因為它涉及到你的軟體能不能升級,此文件不能還原)。一旦apk導出並簽名後,會在apk中生成一META-INF文件夾,裡面有幾個文件:
MANIFEST.MF - manifest 文件(對每個文件整體進行哈希)
CERT.SF - 簽名文件(對文件的前三行進行哈希)
CERT.RSA - 存儲apk包的簽名文件和證書
這幾個文件你通常不用關心,只需要使用和保護好你的keystore
G. android開發app簽名過期了怎麼解決
android開發app簽名過期了可以將app卸載,並重新安裝最新版本。因為所有的Android應用程序都要求開發人員內用一個證書進行數字容簽名,android不會安裝沒有進行簽名的程序,簽名有一個作用就是防止程序被篡改。
APP簽名的其中另一個作用是應用程序升級。如果想要升級應用的版本,那麼必須用同一個證書進行簽名,這是由於只有以同一個證書簽名,系統才會允許安裝升級此應用程序。
如果用戶使用了不同的證書進行簽名,那麼系統就會要求您的應用程序換名稱,也就相當於安裝一個新的應用程序。
(7)android簽名有效期擴展閱讀:
app簽名在數據共享中的應用:
不同的應用程序之間,想共享數據,或者共享代碼,那麼要讓它們運行在同一個進程中,而且要讓它們用相同的證書簽名。
以同一個證書對多個應用程序進行簽名,利用基於簽名的許可權檢查,就可以在應用程序間以安全的方式共享代碼和數據了。
H. 如何對Android的APP進行簽名
1、在Android Studio中打開工來程,點擊「源Build」菜單下的「Generate Signed APK」。
I. android 正式簽名怎麼升級
簽名的方法
1) 用eclipse插件方式簽名
a) 調試簽名
eclipse插件默認賦予程序一個DEBUG許可權的簽名,此簽名的程序不能發布到market上,此簽名有效期為一年,如果過期則導致你無法生成apk文件,此時你只要刪除 debugkeystore即可,系統又會為你生成有效期為一年的新簽名
b) 開發者生成密鑰並簽名
右鍵點擊項目名,在菜單中選擇Android Tools,然後選擇Export Signed Application Package…,即可通過eclipse自定義證書並簽名
c) 開發者導出未簽名的包
右鍵點擊項目名,在菜單中選擇Android Tools,然後選擇Export Signed Application Package…,即可導出未簽名的包,之後可通過命令行方式簽名
2) 用命令行方式簽名
使用標準的java工具keytool和jarsigner來生成證書和給程序簽名
a) 生成簽名
$ keytool -genkey -keystore keyfile -keyalg RSA -validity 10000 -alias yan
註:validity為天數,keyfile為生成key存放的文件,yan為私鑰,RSA為指定的加密演算法(可用RSA或DSA)
b) 為apk文件簽名
$ jarsigner -verbose -keystore keyfile -signedjar signed.apk base.apk yan
註:keyfile為生成key存放的文件,signed.apk為簽名後的apk,base.apk 為未簽名的apk,yan為私鑰
c) 看某個apk是否經過了簽名
$ jarsigner -verify my_application.apk
d) 優化(簽名後需要做對齊優化處理)
$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
3) 在源碼中編譯的簽名
a) 使用源碼中的默認簽名
在源碼中編譯一般都使用默認簽名的,在某源碼目錄中用運行
$ mm showcommands能看到簽名命令
Android提供了簽名的程序signapk.jar,用法如下:
$ signapk publickey.x509[.pem] privatekey.pk8 input.jar output.jar
*.x509.pem為x509格式公鑰,pk8為私鑰
build/target/proct/security目錄中有四組默認簽名可選:testkey platform shared media(具體見README.txt),應用程序中Android.mk中有一個LOCAL_CERTIFICATE欄位,由它指定用哪個key簽名,未指定的默認用testkey.
b) 在源碼中自簽名
Android提供了一個腳本mkkey.sh(build/target/proct/security/mkkey.sh),用於生成密鑰,生成後在應用程序中通過Android.mk中的LOCAL_CERTIFICATE欄位指名用哪個簽名
c) mkkey.sh介紹
i. 生成公鑰
openssl genrsa -3 -out testkey.pem 2048
其中-3是演算法的參數,2048是密鑰長度,testkey.pem是輸出的文件
ii. 轉成x509格式(含作者有效期等)
openssl req -new -x509 -key testkey.pem -out testkey.x509.pem -days 10000 -subj 『/C=US/ST=California/L=MountainView/O=Android/OU=Android/CN=Android/[email protected]』
iii. 生成私鑰
openssl pkcs8 -in testkey.pem -topk8 -outform DER -out testkey.pk8 -nocrypt
把的格式轉換成PKCS #8,這里指定了-nocryp,表示不加密,所以簽名時不用輸入密碼
J. android包名修改了,還能用以前的簽名嗎
android包名修改了,仍然可用以前的簽名,用什麼簽名與包名無關。
同一個開發者的版多個程序盡可能使權用同一個數字證書 ,這可以帶來以下好處:
1、有利於程序升級,當新版程序和舊版程序的數字證書相同時,Android系統才會認為這兩個程序是同一個程序的不同版本。如果新版程序和舊版程序的數字證書不相同,則Android系統認為他們是不同的程序,並產生沖突,會要求新程序更改包名;
2、有利於程序的模塊化設計和開發。Android系統允許擁有同一個數字簽名的程序運行在一個進程中,Android程序會將他們視為同一個程序。所以開發者可以將自己的程序分模塊開發,而用戶只需要在需要的時候下載適當的模塊;
3、 可以通過許可權(permission)的方式在多個程序間共享數據和代碼。Android提供了基於數字證書的許可權賦予機制,應用程序可以和其他的程序共 享概功能或者數據給那那些與自己擁有相同數字證書的程序。如果某個許可權(permission)的protectionLevel是signature, 則這個許可權就只能授予那些跟該許可權所在的包擁有同一個數字證書的程序。