簽名相關(guān)

此篇文章將介紹: 簽名文件的生成饵骨、apk再次簽名苛让、自簽名證書的生成液斜;

引言
Android開發(fā),涉及到開發(fā)和正式版本是不可避免的奔垦,那么debug和release版本的區(qū)別在哪里呢屹耐?

在這里小編簡單地總結(jié)了4點(diǎn):
1. 變量:
debug跟release初始化變量時(shí),debug是將每個(gè)字節(jié)位都賦成0xcc(注1)椿猎,而release賦值近似于隨機(jī)(也可能沒有初始化過)惶岭,這樣用作數(shù)組下標(biāo)將會(huì)數(shù)組越界異常;
2. 自定義消息的消息參數(shù):
release在消息傳遞時(shí)犯眠,會(huì)出現(xiàn)無效句柄之類的錯(cuò)誤按灶。原因是消息體的參數(shù)沒有添加,即應(yīng)該OnMessageOwn(WPARAM wparam, LPARAM lparam);
3. release模式下不出錯(cuò)筐咧,但debug模式下報(bào)錯(cuò):
查看MFC的源碼兆衅,可以發(fā)現(xiàn)好多ASSERT的語句(斷言),這個(gè)宏只是在debug模式下才有效嗜浮,那么就清楚了羡亩,release版不報(bào)錯(cuò)是忽略了錯(cuò)誤而不是沒有錯(cuò)誤,這可能存在很大的隱患危融。
4. Debug版本包括調(diào)試信息畏铆,所以要比Release版本大

   想要避免以上問題,我們可以注意一下:
     1. 注意變量的初始化吉殃,尤其是指針變量辞居,數(shù)組變量的初始化(很大的情況下另作考慮了)楷怒。
     2. 自定義消息及其他聲明的標(biāo)準(zhǔn)寫法
     3. 使用調(diào)試宏時(shí)使用后最好注釋掉
     4. 盡量使用try - catch(...)
     詳細(xì)說明網(wǎng)址:http://blog.csdn.net/hegeneral/article/details/51264114

回到正題,大家都知道debug和release想運(yùn)行到手機(jī)上瓦灶,都是需要簽名的鸠删,那么如何為打包后的apk簽名呢?

apk簽名

  • 方式一: 使用簽名工具:
    360加固助手實(shí)現(xiàn)(或用autosign也行):
    加固贼陶、簽名刃泡、多渠道打包:http://jingyan.baidu.com/article/7908e85c9d3920af481ad200.html
    再次簽名:http://jiagu.#/qcms/manager.html#account

  • 方式二:命令行手動(dòng)簽名:
    1.配置Java的環(huán)境:
    變量名:JAVA_HOME
    變量值:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    2.將要簽名的apk,簽名文件(*.jks)都放在一個(gè)文件夾下碉怔,例子中需要簽名的apk為unsign.apk烘贴,簽名文件為sign.apk
    3.cd到此目錄下,輸入:jarsigner -verbose -keystore sign.jks -signedjar sign.apk unsign.apk sign

解釋一下:
jarsigner 簽名命令 java/bin目錄下的一個(gè)簽名工具
-verbose 輸出簽名的詳細(xì)信息
-keystore 密鑰庫位置 后面跟簽名文件路徑撮胧,因?yàn)楝F(xiàn)在在同一個(gè)文件夾下桨踪,只需要輸入文件名稱即可signedjar sign.apk unsign.apk sign 正式簽名,三個(gè)參數(shù)中依次為簽名后產(chǎn)生的文件sign.apk 芹啥,要簽名的文件unsign.apk和簽名文件的別名key alias

  • 特別注意:使用手動(dòng)簽名锻离,必須保證簽名文件名稱(sign.apk)和別名alias(sign)一致,否則會(huì)出現(xiàn)jarsigner:找不到VCinemaKey.keystore的證書鏈錯(cuò)誤墓怀;

  • 驗(yàn)證apk簽名是否成功 :
    在Dos命令行模式下汽纠,進(jìn)入存放APK文件的目錄,然后使用命令:jarsigner -verify ylcf.encrypted_Aligned.apk

既然apk如何再次簽名知道了捺疼,那么簽名文件又是哪兒來的呢?

簽名文件生成
1. 可以用AndroidStudio中的build工具生成永罚;
2. 先進(jìn)入到j(luò)dk的bin目錄,這樣android.keystore文件就會(huì)生成在該目錄下啤呼,然后輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore ,最后各種next

  • 查看 "簽名文件 " 或 "apk" 中的MD5和SHA1等信息方法:
    首先我們都知道呢袱,只有當(dāng)apk簽過名之后官扣,才會(huì)在其壓縮包的META-INF目錄下,產(chǎn)生CERT.RSA文件羞福,apk的MD5和SHA1就藏在這里惕蹄,方法如下:
    在CERT.RSA文件同目錄下打開cmd,輸入命令 :keytool -printcert -file CERT.RSA
    查看簽名文件中的MD5和SHA1方法:
    keytool -v -list -keystore keystore絕對(duì)路徑治专,或直接進(jìn)入到目錄下在dos或Terminal中執(zhí)行:
  • 拓展:
    AndroidStudio的debug模式下的debug.keystore默認(rèn)位置在 C:\Users\Administrator.android這里卖陵,密碼都為android,別名為androiddebugkey

Https的認(rèn)證證書相關(guān)

  • 概述
    CA認(rèn)證機(jī)構(gòu)默認(rèn)給150多個(gè)網(wǎng)站做了安全認(rèn)證张峰,也就是說有150多個(gè)證書是合法的泪蔫,要想得到一個(gè)合法簽名證書,需要到CA認(rèn)證機(jī)構(gòu)獲取喘批,
    但個(gè)人認(rèn)為這并沒有神馬卵用(只是浪費(fèi)錢撩荣,12306用的就是自己簽名的證書)铣揉,只是在瀏覽器訪問時(shí),不再提示非法網(wǎng)址罷了餐曹,而我們自己創(chuàng)建的
    網(wǎng)址逛拱,對(duì)客戶端嚴(yán)格來說,是需要雙向驗(yàn)證客戶端和服務(wù)器的證書的台猴。HTTPS也是為此而生的朽合,Https的每次請(qǐng)求連接,都需要經(jīng)過三次握手卿吐,
    其實(shí)就是對(duì)客戶端和服務(wù)器是否正確的校驗(yàn)旁舰,握手成功后才會(huì)發(fā)送數(shù)據(jù);HTTPS是HTTP的之下加入了SSL(Secure Socket Layer)嗡官,
    安全的基礎(chǔ)就靠這個(gè)SSL(可理解為簽名證書)了箭窜,SSL/TLS證書包含身份識(shí)別(common name)和公鑰,所以要生成SSL/TLS證書這里需要準(zhǔn)備這兩個(gè)東西衍腥。

  • ssl作用:
    認(rèn)證用戶和服務(wù)器磺樱,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;(驗(yàn)證證書)
    加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊绕畔獭竹捉;(加密)
    維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變尚骄。(摘要算法)

  • 補(bǔ)充:
    采用HTTPS協(xié)議的"服務(wù)器"必須要有一套數(shù)字證書(CA)块差,可以自己制作,也可以向組織申請(qǐng)倔丈。區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過憨闰,
    才可以繼續(xù)訪問,若客戶端為看到有驗(yàn)證的代碼需五,則很可能服務(wù)器用的是受信機(jī)構(gòu)頒發(fā)的證書鹉动,而使用受信任的公司申請(qǐng)的證書則不會(huì)彈出提示頁面。這套證書其實(shí)就是一對(duì)公鑰和私鑰宏邮。

  • 概念及流程梳理:

    • 什么是自簽名證書泽示?
      就是沒有通過受信任的證書頒發(fā)機(jī)構(gòu), 自己給自己頒發(fā)的證書.
    • 自簽名證書怎么生成?
      KeyTool 生成自簽名證書:
      服務(wù)器生成證書:keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
      客戶端生成證書:keytool -genkey -alias client1 -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client1.p12 -storepass 123456
      讓服務(wù)器信任客戶端證書:必須先把客戶端證書導(dǎo)出為一個(gè)單獨(dú)的CER文件蜜氨,使用如下命令:keytool -export -alias client1 -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer(CER文件的密碼可能需要重新輸入)
      然后將兩個(gè)文件導(dǎo)入到服務(wù)器的證書庫械筛,添加為信任證書:keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass 123456
  • 補(bǔ)充:
    所有公鑰證書都有兩種格式:純文本的.crt格式或是二進(jìn)制的.cer格式,兩種都可以用飒炎。將生成的文件.keystore 復(fù)制到項(xiàng)目路徑 /androidappdir/res/raw/ 中变姨;
    兩種證書的生成用的是默認(rèn)的公鑰私鑰,新的公鑰和私鑰的生成方法:若安裝了git,點(diǎn)開git->Git Bash輸入ssh-keygen厌丑,然后一直點(diǎn)回車定欧,這樣就會(huì)在c/Users/Administrator/.ssh中生成兩個(gè)文件:id_rsa是私鑰渔呵,不能泄露出去,id_rsa.pub是公鑰;

.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砍鸠,一起剝皮案震驚了整個(gè)濱河市扩氢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爷辱,老刑警劉巖录豺,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饭弓,居然都是意外死亡双饥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門弟断,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咏花,“玉大人,你說我怎么就攤上這事阀趴』韬玻” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵刘急,是天一觀的道長棚菊。 經(jīng)常有香客問我,道長叔汁,這世上最難降的妖魔是什么统求? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮据块,結(jié)果婚禮上码邻,老公的妹妹穿的比我還像新娘。我一直安慰自己瑰钮,他們只是感情好冒滩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布微驶。 她就那樣靜靜地躺著浪谴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪因苹。 梳的紋絲不亂的頭發(fā)上苟耻,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音扶檐,去河邊找鬼凶杖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛款筑,可吹牛的內(nèi)容都是我干的智蝠。 我是一名探鬼主播腾么,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杈湾!你這毒婦竟也來了解虱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤漆撞,失蹤者是張志新(化名)和其女友劉穎殴泰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浮驳,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悍汛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了至会。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片离咐。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奋献,靈堂內(nèi)的尸體忽然破棺而出健霹,到底是詐尸還是另有隱情,我是刑警寧澤瓶蚂,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布糖埋,位于F島的核電站,受9級(jí)特大地震影響窃这,放射性物質(zhì)發(fā)生泄漏瞳别。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一杭攻、第九天 我趴在偏房一處隱蔽的房頂上張望祟敛。 院中可真熱鬧,春花似錦兆解、人聲如沸馆铁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埠巨。三九已至,卻和暖如春现拒,著一層夾襖步出監(jiān)牢的瞬間辣垒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工印蔬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勋桶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像例驹,于是被迫代替她去往敵國和親捐韩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 檢查app的證書和簽名對(duì)Android簽名驗(yàn)證app的簽名 命令行代碼: [進(jìn)入文件目錄]cd [文件目錄][復(fù)制...
    MarcoHorse閱讀 603評(píng)論 0 0
  • 開發(fā)中,Apk簽名是一件不大也不小的事,如果你做過微博相關(guān)的開發(fā),你可能遇到如下情景: 用Eclipse或者AS直...
    andforce閱讀 473評(píng)論 0 0
  • 服務(wù)器https配置 配置https操作說明文檔 1鹃锈、查看服務(wù)器環(huán)境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 8,853評(píng)論 0 9
  • 通過java工具生成簽名文件 1.以管理員身份運(yùn)行cmd工具奥帘,然后進(jìn)入到j(luò)dk的bin目錄下運(yùn)行keytool工具...
    喝那個(gè)東南西北風(fēng)閱讀 412評(píng)論 0 0
  • 寫在前面 今天使用高德地圖為應(yīng)用添加Key的時(shí)候,發(fā)現(xiàn)有一項(xiàng)需要用到安全碼SHA1仪召,而SHA1存在于Keystor...
    代碼咖啡閱讀 26,774評(píng)論 5 34