為什么要給應(yīng)用程序簽名?

1、為什么要給Android應(yīng)用程序簽名?
Android系統(tǒng)要求每一個(gè)Android應(yīng)用程序必須要經(jīng)過(guò)數(shù)字簽名才能夠安裝到系統(tǒng)中,也就是說(shuō)如果一個(gè)Android應(yīng)用程序沒(méi)有經(jīng)過(guò)數(shù)字簽名,是沒(méi)有辦法安裝到系統(tǒng)中的!Android通過(guò)數(shù)字簽名來(lái)標(biāo)識(shí)應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系,不是用來(lái)決定最終用戶(hù)可以安裝哪些應(yīng)用程序。這個(gè)數(shù)字簽名由應(yīng)用程序的作者完成,并不需要權(quán)威的數(shù)字證書(shū)簽名機(jī)構(gòu)認(rèn)證,它只是用來(lái)讓?xiě)?yīng)用程序包自我認(rèn)證的。
將數(shù)字證書(shū)與軟件連接時(shí),需要輸入一些軟件的正確信息。通常,一個(gè)數(shù)字證書(shū)只能保護(hù)一個(gè)軟件的安全,所以在填寫(xiě)軟件的域名時(shí)需要準(zhǔn)確。如果填寫(xiě)的信息有錯(cuò)漏,在一定程度上也會(huì)影響簽名。簽名時(shí),需要更改軟件中的相關(guān)設(shè)置,并將辦理的數(shù)字簽名設(shè)置為可以信任的證書(shū)。

2、為什么我開(kāi)發(fā)的Android應(yīng)用程序沒(méi)有做什么簽名也能在模擬器和手機(jī)上運(yùn)行?
你沒(méi)有給Android應(yīng)用程序簽名并不代表Android應(yīng)用程序沒(méi)有被簽名。為了方便我們開(kāi)發(fā)調(diào)試程序,ADT會(huì)自動(dòng)的使用debug密鑰為應(yīng)用程序簽名。debug密鑰?它在哪?debug密鑰是一個(gè)名為debug.keystore的文件,它的位置:
Ubuntu: ~/.android/debug.keystore (win10: c:/user/.Android/debug.keystore; ?xp: C:/Documents and Settings/user/.Android/debug.keystore)
“user”對(duì)應(yīng)于你自己的windows操作系統(tǒng)用戶(hù)名,這也就意味著,如果我們想擁有自己的簽名,而不是讓ADT幫我們簽名的話,我們也要有一個(gè)屬于自己的密鑰文件(*.keystore)
未使用數(shù)字簽名的軟件可能無(wú)法正常運(yùn)行,以Windows系統(tǒng)為例,如果用戶(hù)下載運(yùn)行未簽名的軟件, Windows系統(tǒng)會(huì)發(fā)出紅色安全警告;而未簽名的ActiveX控件,Windows會(huì)直接攔截不允許運(yùn)行。因此,數(shù)字簽名是軟件發(fā)行前必不可少的一道工序。

對(duì)軟件進(jìn)行數(shù)字簽名的前提是需要申請(qǐng)一張代碼簽名證書(shū),它可用于簽署Adobe Air、Apple 平臺(tái)、Java、Mozilla對(duì)象文件以及MS Office宏和VBA應(yīng)用程序。為何要對(duì)軟件進(jìn)行數(shù)字簽名呢?
1、應(yīng)用程序數(shù)字簽名不僅減少軟件下載時(shí)彈出的安全警告,讓用戶(hù)可以放心下載軟件
2、數(shù)字簽名可以驗(yàn)證發(fā)行者的真實(shí)身份
當(dāng)使用代碼簽名證書(shū)對(duì)軟件進(jìn)行數(shù)字簽名之后,用戶(hù)就能知道該軟件的發(fā)行者是誰(shuí),不用擔(dān)心是否是假冒軟件,大大的增加了用戶(hù)的可信度,從而建立良好的軟件品牌信譽(yù)度,提升公司形象。
3、數(shù)字簽名可以防止軟件被惡意篡改
數(shù)字簽名就相當(dāng)于一張“封條”,可以防止軟件發(fā)行之后被惡意篡改或被人非法捆綁一些間諜軟件后用戶(hù)下載,從而更有效地保護(hù)了軟件開(kāi)發(fā)商的切身利益和產(chǎn)品品牌。

我們都知道,代碼簽名證書(shū)主要有OV和EV兩種類(lèi)型,為什么軟件更需要EV代碼簽名證書(shū)呢?
1、EV代碼簽名證書(shū)執(zhí)行的是更加嚴(yán)格的審核標(biāo)準(zhǔn),它對(duì)于證書(shū)的申請(qǐng)者進(jìn)行了嚴(yán)格的身份確認(rèn),確保證書(shū)的使用者身份真實(shí)可信。
2、EV代碼簽名證書(shū)通常使用更加嚴(yán)格的證書(shū)載體來(lái)存儲(chǔ)證書(shū),即軟件發(fā)布者在使用EV代碼簽名證書(shū)對(duì)軟件進(jìn)行數(shù)字簽名的時(shí)候,需要拿到對(duì)應(yīng)的eToken插入到電腦中,輸入密碼方可進(jìn)行數(shù)字簽名,這種方式減少了證書(shū)被惡意復(fù)制后濫用的風(fēng)險(xiǎn)。
當(dāng)軟件使用了EV代碼簽名證書(shū)之后,無(wú)論是下載還是安裝,Windows皆對(duì)這個(gè)軟件進(jìn)行無(wú)條件放行,沒(méi)有風(fēng)險(xiǎn)警告,沒(méi)有安裝攔截,也沒(méi)有“發(fā)行者未知”的不友好提示,暢通無(wú)阻
可見(jiàn),應(yīng)用程序數(shù)字簽名是軟件代碼的安全保護(hù)者。