簽名相關

此篇文章將介紹: 簽名文件的生成、apk再次簽名、自簽名證書的生成;

引言
Android開發,涉及到開發和正式版本是不可避免的,那么debug和release版本的區別在哪里呢?

在這里小編簡單地總結了4點:
1. 變量:
debug跟release初始化變量時,debug是將每個字節位都賦成0xcc(注1),而release賦值近似于隨機(也可能沒有初始化過),這樣用作數組下標將會數組越界異常;
2. 自定義消息的消息參數:
release在消息傳遞時,會出現無效句柄之類的錯誤。原因是消息體的參數沒有添加,即應該OnMessageOwn(WPARAM wparam, LPARAM lparam);
3. release模式下不出錯,但debug模式下報錯:
查看MFC的源碼,可以發現好多ASSERT的語句(斷言),這個宏只是在debug模式下才有效,那么就清楚了,release版不報錯是忽略了錯誤而不是沒有錯誤,這可能存在很大的隱患。
4. Debug版本包括調試信息,所以要比Release版本大

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

回到正題,大家都知道debug和release想運行到手機上,都是需要簽名的,那么如何為打包后的apk簽名呢?

apk簽名

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

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

解釋一下:
jarsigner 簽名命令 java/bin目錄下的一個簽名工具
-verbose 輸出簽名的詳細信息
-keystore 密鑰庫位置 后面跟簽名文件路徑,因為現在在同一個文件夾下,只需要輸入文件名稱即可signedjar sign.apk unsign.apk sign 正式簽名,三個參數中依次為簽名后產生的文件sign.apk ,要簽名的文件unsign.apk和簽名文件的別名key alias

  • 特別注意:使用手動簽名,必須保證簽名文件名稱(sign.apk)和別名alias(sign)一致,否則會出現jarsigner:找不到VCinemaKey.keystore的證書鏈錯誤;

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

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

簽名文件生成
1. 可以用AndroidStudio中的build工具生成;
2. 先進入到jdk的bin目錄,這樣android.keystore文件就會生成在該目錄下,然后輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore ,最后各種next

  • 查看 "簽名文件 " 或 "apk" 中的MD5和SHA1等信息方法:
    首先我們都知道,只有當apk簽過名之后,才會在其壓縮包的META-INF目錄下,產生CERT.RSA文件,apk的MD5和SHA1就藏在這里,方法如下:
    在CERT.RSA文件同目錄下打開cmd,輸入命令 :keytool -printcert -file CERT.RSA
    查看簽名文件中的MD5和SHA1方法:
    keytool -v -list -keystore keystore絕對路徑,或直接進入到目錄下在dos或Terminal中執行:
  • 拓展:
    AndroidStudio的debug模式下的debug.keystore默認位置在 C:\Users\Administrator.android這里,密碼都為android,別名為androiddebugkey

Https的認證證書相關

  • 概述
    CA認證機構默認給150多個網站做了安全認證,也就是說有150多個證書是合法的,要想得到一個合法簽名證書,需要到CA認證機構獲取,
    但個人認為這并沒有神馬卵用(只是浪費錢,12306用的就是自己簽名的證書),只是在瀏覽器訪問時,不再提示非法網址罷了,而我們自己創建的
    網址,對客戶端嚴格來說,是需要雙向驗證客戶端和服務器的證書的。HTTPS也是為此而生的,Https的每次請求連接,都需要經過三次握手,
    其實就是對客戶端和服務器是否正確的校驗,握手成功后才會發送數據;HTTPS是HTTP的之下加入了SSL(Secure Socket Layer),
    安全的基礎就靠這個SSL(可理解為簽名證書)了,SSL/TLS證書包含身份識別(common name)和公鑰,所以要生成SSL/TLS證書這里需要準備這兩個東西。

  • ssl作用:
    認證用戶和服務器,確保數據發送到正確的客戶機和服務器;(驗證證書)
    加密數據以防止數據中途被竊取;(加密)
    維護數據的完整性,確保數據在傳輸過程中不被改變。(摘要算法)

  • 補充:
    采用HTTPS協議的"服務器"必須要有一套數字證書(CA),可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,
    才可以繼續訪問,若客戶端為看到有驗證的代碼,則很可能服務器用的是受信機構頒發的證書,而使用受信任的公司申請的證書則不會彈出提示頁面。這套證書其實就是一對公鑰和私鑰。

  • 概念及流程梳理:

    • 什么是自簽名證書?
      就是沒有通過受信任的證書頒發機構, 自己給自己頒發的證書.
    • 自簽名證書怎么生成?
      KeyTool 生成自簽名證書:
      服務器生成證書: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
      讓服務器信任客戶端證書:必須先把客戶端證書導出為一個單獨的CER文件,使用如下命令:keytool -export -alias client1 -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer(CER文件的密碼可能需要重新輸入)
      然后將兩個文件導入到服務器的證書庫,添加為信任證書:keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass 123456
  • 補充:
    所有公鑰證書都有兩種格式:純文本的.crt格式或是二進制的.cer格式,兩種都可以用。將生成的文件.keystore 復制到項目路徑 /androidappdir/res/raw/ 中;
    兩種證書的生成用的是默認的公鑰私鑰,新的公鑰和私鑰的生成方法:若安裝了git,點開git->Git Bash輸入ssh-keygen,然后一直點回車,這樣就會在c/Users/Administrator/.ssh中生成兩個文件:id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰;

.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內容

  • 檢查app的證書和簽名對Android簽名驗證app的簽名 命令行代碼: [進入文件目錄]cd [文件目錄][復制...
    MarcoHorse閱讀 608評論 0 0
  • 開發中,Apk簽名是一件不大也不小的事,如果你做過微博相關的開發,你可能遇到如下情景: 用Eclipse或者AS直...
    andforce閱讀 479評論 0 0
  • 服務器https配置 配置https操作說明文檔 1、查看服務器環境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 8,891評論 0 9
  • 通過java工具生成簽名文件 1.以管理員身份運行cmd工具,然后進入到jdk的bin目錄下運行keytool工具...
    喝那個東南西北風閱讀 426評論 0 0
  • 寫在前面 今天使用高德地圖為應用添加Key的時候,發現有一項需要用到安全碼SHA1,而SHA1存在于Keystor...
    代碼咖啡閱讀 26,831評論 5 34