自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android數(shù)字證書(shū)具體應(yīng)用機(jī)制

移動(dòng)開(kāi)發(fā) Android
Android數(shù)字證書(shū)的作用是非常重要的。Android操作系統(tǒng)每一個(gè)應(yīng)用程序的安裝都需要經(jīng)過(guò)這一數(shù)字證書(shū)的簽名。

Android手機(jī)操作系統(tǒng)作為一款比較流行的開(kāi)源系統(tǒng)在手機(jī)領(lǐng)域占據(jù)著舉足輕重的地位。 在Android系統(tǒng)中,所有安裝到系統(tǒng)的應(yīng)用程序都必有一個(gè)Android數(shù)字證書(shū),此數(shù)字證書(shū)用于標(biāo)識(shí)應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系,如果一個(gè)permission的protectionLevel為signature,那么就只有那些跟該permission所在的程序擁有同一個(gè)數(shù)字證書(shū)的應(yīng)用程序才能取得該權(quán)限。#t#

Android使用Java的數(shù)字證書(shū)相關(guān)的機(jī)制來(lái)給apk加蓋數(shù)字證書(shū),要理解Android數(shù)字證書(shū),需要先了解以下數(shù)字證書(shū)的概念和java的數(shù)字證書(shū)機(jī)制。

基礎(chǔ)概念:數(shù)字證書(shū):

數(shù)字證實(shí)是采用數(shù)字手段來(lái)證實(shí)用戶(hù)身份的一種方法。數(shù)字證書(shū)含有兩部分?jǐn)?shù)據(jù):一部分是對(duì)應(yīng)主體(單位或個(gè)人)的信息,另一部分是這個(gè)主體所對(duì)應(yīng)的公鑰。即數(shù)字證書(shū)保存了主體和它的公鑰的一一對(duì)應(yīng)關(guān)系,用于自我認(rèn)證(向其他的用戶(hù)證明自己的身份)。

Java數(shù)字證書(shū)工具。

Java中的keytool.exe可以用來(lái)創(chuàng)建數(shù)字證書(shū),所有的數(shù)字證書(shū)是以一條一條(采用別名區(qū)別)的形式存入證書(shū)庫(kù)的中,證書(shū)庫(kù)中的一條證書(shū)包含該條證書(shū)的私鑰,公鑰和對(duì)應(yīng)的數(shù)字證書(shū)的信息。證書(shū)庫(kù)中的一條證書(shū)可以導(dǎo)出數(shù)字證書(shū)文件,數(shù)字證書(shū)文件只包括主體信息和對(duì)應(yīng)的公鑰。

每一個(gè)證書(shū)庫(kù)是一個(gè)文件組成,它有訪(fǎng)問(wèn)密碼,在***創(chuàng)建時(shí),它會(huì)自動(dòng)生成證書(shū)庫(kù),并要求指定訪(fǎng)問(wèn)證書(shū)庫(kù)的密碼。

在創(chuàng)建證書(shū)的的時(shí)候,需要填寫(xiě)證書(shū)的一些信息和證書(shū)對(duì)應(yīng)的私鑰密碼。這些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它們的意思是:

CN(Common Name名字與姓氏)

OU(Organization Unit組織單位名稱(chēng))

O(Organization組織名稱(chēng))

L(Locality城市或區(qū)域名稱(chēng))

ST(State州或省份名稱(chēng))

C(Country國(guó)家名稱(chēng))

可以采用交互式讓工具提示輸入以上信息,也可以采用參數(shù)

-dname "CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx"來(lái)自動(dòng)創(chuàng)建。

例如這條命令:

keytool -genkey -alias testCA -keyalg RSA -keysize 1024 -keystore testCALib -validity 3650

在數(shù)字證書(shū)庫(kù)testCALib中創(chuàng)建了一個(gè)別名為testCA,使用RSA算法加密的,有效期為3650天的數(shù)字證書(shū)。

證書(shū)生成以后,我們可以使用命名將數(shù)字證書(shū)導(dǎo)出為一個(gè)文件。

keytool -export -alias testCA -file testCA.cer -keystore testALib -rfc

有關(guān)keytool的其他用法可以查詢(xún)keytool的幫助文檔。

數(shù)字證書(shū)生成以后,我們需要使用生成的數(shù)字證書(shū)給程序包簽名,這個(gè)是使用jarsigner 工具。例如,如果我們有一個(gè)android的程序包c(diǎn)alendar.apk.,我們就可以使用剛生成的testCA給改程序包簽名。

jarsigner -keystore testCALib calendar.apk testCA.

Android數(shù)字證書(shū)概述:

Android系統(tǒng)要求每一個(gè)安裝進(jìn)系統(tǒng)的應(yīng)用程序都是經(jīng)過(guò)數(shù)字證書(shū)簽名的,數(shù)字證書(shū)的私鑰則保存在程序開(kāi)發(fā)者的手中。Android將數(shù)字證書(shū)用來(lái)標(biāo)識(shí)應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系,兒不是用來(lái)決定最終用戶(hù)可以安裝哪些應(yīng)用程序。這個(gè)數(shù)字證書(shū)并不需要權(quán)威的數(shù)字證書(shū)簽名機(jī)構(gòu)認(rèn)證,它只是用來(lái)讓?xiě)?yīng)用程序包自我認(rèn)證的。

Android數(shù)字證書(shū)包含以下幾個(gè)要點(diǎn):

(1)所有的應(yīng)用程序都必須有數(shù)字證書(shū),Android系統(tǒng)不會(huì)安裝一個(gè)沒(méi)有數(shù)字證書(shū)的應(yīng)用程序

(2)Android程序包使用的數(shù)字證書(shū)可以是自簽名的,不需要一個(gè)權(quán)威的數(shù)字證書(shū)機(jī)構(gòu)簽名認(rèn)證

(3)如果要正式發(fā)布一個(gè)Android ,必須使用一個(gè)合適的私鑰生成的數(shù)字證書(shū)來(lái)給程序簽名,而不能使用adt插件或者ant工具生成的調(diào)試證書(shū)來(lái)發(fā)布。

(4)數(shù)字證書(shū)都是有有效期的,Android只是在應(yīng)用程序安裝的時(shí)候才會(huì)檢查證書(shū)的有效期。如果程序已經(jīng)安裝在系統(tǒng)中,即使證書(shū)過(guò)期也不會(huì)影響程序的正常功能。

(***ndroid使用標(biāo)準(zhǔn)的java工具 Keytool and Jarsigner 來(lái)生成數(shù)字證書(shū),并給應(yīng)用程序包簽名。

Android系統(tǒng)不會(huì)安裝運(yùn)行任何一款未經(jīng)數(shù)字簽名的apk程序,無(wú)論是在模擬器上還是在實(shí)際的物理設(shè)備上。Android的開(kāi)發(fā)工具(ADT插件和Ant)都可以協(xié)助開(kāi)發(fā)者給apk程序簽名,它們都有兩種模式:調(diào)試模式(debug mode)和發(fā)布模式(release mode)。

在調(diào)試模式下,android的開(kāi)發(fā)工具會(huì)在每次編譯時(shí)使用調(diào)試用的數(shù)字證書(shū)給程序簽名,開(kāi)發(fā)者無(wú)須關(guān)心。

當(dāng)要發(fā)布程序時(shí),開(kāi)發(fā)者就需要使用自己的數(shù)字證書(shū)給apk包簽名,可以有兩種方法。

(1)在命令行下使用JDK中的和Keytool(用于生成數(shù)字證書(shū))和Jarsigner(用于使用數(shù)字證書(shū)簽名)來(lái)給apk包簽名

(2)使用ADT Export Wizard進(jìn)行簽名(如果沒(méi)有數(shù)字證書(shū)可能需要生成數(shù)字證書(shū))

簽名策略:

同一個(gè)開(kāi)發(fā)者的多個(gè)程序盡可能使用同一個(gè)數(shù)字證書(shū),這可以帶來(lái)以下好處。

(1)有利于程序升級(jí),當(dāng)新版程序和舊版程序的數(shù)字證書(shū)相同時(shí),Android系統(tǒng)才會(huì)認(rèn)為這兩個(gè)程序是同一個(gè)程序的不同版本。如果新版程序和舊版程序的數(shù)字證書(shū)不相同,則Android系統(tǒng)認(rèn)為他們是不同的程序,并產(chǎn)生沖突,會(huì)要求新程序更改包名。

(2)有利于程序的模塊化設(shè)計(jì)和開(kāi)發(fā)。Android系統(tǒng)允許擁有同一個(gè)數(shù)字簽名的程序運(yùn)行在一個(gè)進(jìn)程中,Android程序會(huì)將他們視為同一個(gè)程序。所以開(kāi)發(fā)者可以將自己的程序分模塊開(kāi)發(fā),而用戶(hù)只需要在需要的時(shí)候下載適當(dāng)?shù)哪K。

(3)可以通過(guò)權(quán)限(permission)的方式在多個(gè)程序間共享數(shù)據(jù)和代碼。Android提供了基于數(shù)字證書(shū)的權(quán)限賦予機(jī)制,應(yīng)用程序可以和其他的程序共享概功能或者數(shù)據(jù)給那那些與自己擁有相同數(shù)字證書(shū)的程序。如果某個(gè)權(quán)限(permission)的protectionLevel是signature,則這個(gè)權(quán)限就只能授予那些跟該權(quán)限所在的包擁有同一個(gè)數(shù)字證書(shū)的程序。

另一個(gè)需要考慮的是Android數(shù)字證書(shū)的有效期:

(1)數(shù)字證書(shū)的有效期要包含程序的預(yù)計(jì)生命周期,一旦數(shù)字證書(shū)失效,持有改數(shù)字證書(shū)的程序?qū)⒉荒苷I?jí)。

(2)如果多個(gè)程序使用同一個(gè)數(shù)字證書(shū),則該數(shù)字證書(shū)的有效期要包含所有程序的預(yù)計(jì)生命周期。

(3)Android Market強(qiáng)制要求所有應(yīng)用程序數(shù)字證書(shū)的有效期要持續(xù)到2033年10月22日以后。

責(zé)任編輯:曹凱 來(lái)源: CSDN
相關(guān)推薦

2009-08-14 13:58:43

數(shù)字證書(shū)通信加密身份驗(yàn)證

2011-09-13 09:37:38

2020-03-12 10:41:35

數(shù)字簽名加密證書(shū)劫持

2016-11-10 23:51:41

2013-06-28 10:24:31

2010-09-02 21:10:13

2024-11-28 09:43:54

2011-03-01 10:15:19

Firefox支付寶

2011-07-18 14:44:29

2012-07-30 10:00:56

2010-06-21 08:52:12

數(shù)字證書(shū).NET

2010-10-25 13:51:33

2021-09-28 09:16:00

網(wǎng)絡(luò)空間安全網(wǎng)絡(luò)安全信息泄露

2021-02-15 16:45:26

網(wǎng)絡(luò)安全密碼技術(shù)數(shù)字證書(shū)

2011-08-30 14:29:31

數(shù)字簽名數(shù)字證書(shū)

2010-01-15 16:45:14

2012-06-15 09:37:43

2021-09-26 05:59:16

數(shù)字簽名數(shù)字證書(shū)HTTPS

2011-11-03 09:24:57

李洋簽名
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)