導航:首頁 > 操作系統 > androidpem證書

androidpem證書

發布時間:2024-06-16 21:15:40

『壹』 APK簽名機制原理詳解

眾所周知,android系統在安裝Apk的過程中,會對Apk進行簽名校驗,校驗通過後才能安裝成功。那你知道簽名校驗的機制是什麼?具體校驗的是什麼內容嗎?申請第三方SDK(如微信支付)時填入的SAH1值是什絕頌高么?目前眾多的快速批量打包方案又是如何繞過簽名檢驗的?

我將通過一系列的文章來解開這些疑惑:

這篇文章先來介紹Apk簽名相關的基本知識。

要知道簽名是什麼,先來看為什麼需要簽名 。大家都知道,在消息通信時,必須至少解決兩個問題:一是確保消息來源的真實性,二是確保消息不會被第三方篡改。在安裝Apk時,同樣需要確保Apk來源的真實性,以及Apk沒有被第三方篡改。如何解決這兩個問題呢?方法就是開發者對Apk進行簽名:在Apk中寫入一個「指紋」。指紋寫入以後,Apk中有任何修改,都會導致這個指紋無效,Android系統在安裝Apk進行簽名校驗時就會不通過,從而保證了安全性。

要了解如何實現簽名,需要了解兩個基本概念:數字摘要和數字證書。

簡單來說,就是對一個任意長度的數據,通過一個Hash演算法計算後,都可以得到一個固定長度的二進制數據,這個數據就稱為「摘要」。摘要具有下面的幾個特徵:

前面已經說到,可以通過簽名來確保數據來源的可靠性和數據的不可篡改性。簽名就是在摘要的基礎上再進行一次加密,對摘要加密後的數據就可以當作數字簽名,在安裝Apk需要對簽名進行驗證,驗證通過才能繼續安裝。

這里有兩個過程:簽名過程 和 校驗過程。

先來說 簽名過程:

再來看 校驗過程:

這里有一個前提:接收方必須要知道發送方的公鑰和所使用的演算法。如果數字簽名和公鑰一起被篡改,接收方無法得知,還是會校驗通過。如何保證公鑰的可靠性呢?答案是數字證書,數字證書是身份認證機構(Certificate Authority)頒發的,包含了以下信息:

接收方收到消息後,先向CA驗證證書的合法性(根據證書的簽名、綁定的域名等信息。CA機構是權威的,可以保證這個過程的可靠性。)再進行簽名校驗。

需要注意的是,Apk的證書通常的自簽名的,也就是由開發者自己製作,沒有向CA機構申請。Android在安裝Apk時並沒有校驗證書本身的合法性,只是從證書中提取公鑰和加密演算法,這也正是對第三方Apk重新簽名後,還能夠繼續在沒有安裝這個Apk的系統中繼續安裝的原因。

我們在對Apk簽名時並沒有直接指定私鑰、公鑰和數字證書,而是使用keystore文件,這些信息都包含在了keystore文件中。根據編碼不同,keystore文件分為很多種,Android使用的是java標准keystore格式JKS(Java Key Storage),所以通過Android Studio導出的keystore文件是以.jks結尾的。

keystore使用的證書標準是X.509,X.509標准也有多種編碼格式,常用的有兩種:pem(Privacy Enhanced Mail)和der(Distinguished Encoding Rules)。jks使用的是der格式,Android也支持直接使用pem格式的證書進行簽名,我們下面會介紹。

兩種證書編碼格式的區別:


X.509證書格式:

Android提供了兩種對Apk的簽名方式,一種是基於JAR的簽名方式,另一種是基於Apk的簽名方式,它們的主要區別在於使用的簽名文件不一樣:jarsigner使用keystore文件進行簽名;apksigner除了並尺支持使用keystore文件進行簽名外,還支持直接指定pem證書文件和私鑰進行簽名。

不知道大家有沒有注意一個問題,我們通過櫻御keytool或者AS生成一個keystore的時候( 簽署您的應用 ),除了要輸入keystore的密碼外,還要輸入一個alias和key的密碼。在簽名時,除了要指定keystore文件和密碼外,也要指定alias和key的密碼,這是為什麼呢?

原因是keystore是一個密鑰庫,也就是說它可以存儲多對密鑰和證書,keystore的密碼是用於保護keystore本身的,一對密鑰和證書是通過alias來區分的。從這里可以看出jarsigner是支持使用多個證書對Apk進行簽名的。apksigner也同樣支持,關於apksigner的使用介紹可以參考官方文檔 apksigner 。

ok,簽名的基本概念和校驗過程就介紹到這里,關於JAR簽名和V2簽名機制的詳細介紹,參考下面兩篇文章:

『貳』 手機端抓包工具

Charles 手機抓包

介面測試之——fiddler抓包、過濾、斷點調試

AndroidHttpCapture---手機輕松抓包工具

AndroidHttpCapture使用方法:
【搭建環境】
1.在測試手機安裝AndroidHttpCapture即可。
2.如果測試手機使用移動網路,新增一個接入點,將其代理伺服器設置為127.0.0.1 埠為8888,別的參數參照已選中的接入點進行配置,保存後選擇該新增接入點即可。
如果測試手機使用WIFI,把WIFI代理設為127.0.0.1:8888。
3.首次進入AndroidHttpCapture時安裝CA證書,然後把自沖羨簽名證書添加到系統根證書目錄。
自簽名證乎陪書所在路徑:手機根目錄歲判蠢的har/littleproxy-mitm.pem。
自簽名證書添加方法:
首先用openssl命令計算證書的哈希值(可以打開Linux環境Git Bash命令窗口):

然後把上面的哈希值作為文件名,添加證書(可以打開Windows環境CMD命名窗口):

【使用方法】
https://github.com/JZ-Darkal/AndroidHttpCapture

【查看HAR文件】
http://h5.darkal.cn/har/

『叄』 如何為apk以及zip文件簽名

如果你只是想知道如何簽名及下載簽名工具,請直接看「如何使用SignApk.jar來為一個apk或zip文件簽名」部分。要創建自己的證書請從頭看起。
准備知識:
當你要發布一個軟體或是自製的ROM時,你就需要一個使用了私鑰的證書來為.apk或.zip文件進行簽名。Android系統使用證書來識別軟體作者和軟體之間所建立的認證關系。做這個事情最經典的方式就是用keytool創建證書,然後使用jarsigner進行簽名。但是本教程則會提供一個對於大多數人來說更為容易的方法,那就是使用一個名為SignApk.jar的工具。
SignApk.jar是一個已包含在Android平台源碼包中的工具,你可以在本貼的附件中下載。如果要使用SignApk.jar,你需要創建一個帶有對應證書/公鑰的私鑰。而你可以使用Openssl來創建私鑰/公鑰對。在Unix/Linux系統中使用Openssl相對來說比較容易。對於Windows用戶,你可以在本貼附件或此鏈接中下載Windows版本的Openssl。
如何使用OpenSSL創建私鑰/公鑰對(也就通常說的證書文件,有誤勿怪)(Windows版本)

下載附件中的openssl-0.9.8k_WIN32.zip
將下載到的壓縮解壓到你電腦上的任意位置(例如:C:\OpenSSL)
在OpenSSL\bin文件夾下按順序輸入(使用CMD命令行工具,其中第2步會需要你輸入一些信息,見圖):
1、openssl genrsa -out key.pem 1024
2、openssl req -new -key key.pem -config C:\OpenSSL\openssl.cnf -out request.pem
3、openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
4、openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt

大星星提示:如果你的recovery不具備簽名校驗切換功能,那麼用你自己生成的證書文件來給ROM簽名,會提示簽名校驗失敗。因為目前幾乎所有的第三方recovery中所帶的私鑰都是testkey的。(附件中的android.zip裡面所包含的證書文件已更新為testkey)

如何使用SignApk.jar來為一個apk或zip文件簽名:

下載附件中的android.zip
將下載到的壓縮包解壓到你電腦上的任意位置(例如:C:\android)
如果你的電腦上還沒有安裝JAVA環境,請下載並進行安裝。
(如果你創建了自己的私鑰/公鑰對)復制certificate.pem和key.pk8到你解壓得到的android文件夾中
使用CMD命令行工具cd到android文件夾,然後輸入:(對於我提供的包,只需要將要簽名的文件放在android文件夾中,然後拖至對應的批處理文件上即可)
java -jar signapk.jar certificate.pem key.pk8 your-app.apk your-signed-app.apk
或是
java -jar signapk.jar certificate.pem key.pk8 your-update.zip your-signed-update.zip

『肆』 android中pem證書是怎樣生成的

證書都可以用openssl工具鏈來生成。
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。
在OpenSSL被曝出現嚴重安全漏洞後,發現多數通過SSL協議加密的網站使用名為OpenSSL的開源軟體包。由於這是互聯網應用最廣泛的安全傳輸方法,被網銀、在線支付、電商網站、門戶網站、電子郵件等重要網站廣泛使用,所以該漏洞影響范圍廣大。
OpenSSL漏洞不僅影響以https開頭的網站,黑客還可利用此漏洞直接對個人PC發起"心臟出血"(Heartbleed)攻擊。據分析,Windows上有大量軟體使用了存在漏洞的OpenSSL代碼庫,可能被黑客攻擊抓取用戶電腦上的內存數據。

『伍』 如何使用P12證書的Android

P12格式證書導入android的方法:
keytool無法直接導入PKCS12文件。
第一種方法是使用IE將pfx證書導入,再導出為cert格式文件。使用上面介紹的方法將其導入到密鑰倉庫中。這樣的話倉庫裡面只包含了證書信息,沒有私鑰內容。
第二種方法是將pfx文件導入到IE瀏覽器中,再導出為pfx文件。
新生成的pfx不能被導入到keystore中,報錯:keytool錯誤: java.lang.Exception: 所輸入的不是一個 X.509 認證。新生成的pfx文件可以被當作keystore使用。但會報個錯誤as unknown attr1.3.6.1.4.1.311.17.1,查了下資料,說IE導出的就會這樣,使用Netscape就不會有這個錯誤.
第三種方法是將pfx文件當作一個keystore使用。但是通過微軟的證書管理控制台生成的pfx文件不能直接使用。keytool不認此格式,報keytool錯誤: java.io.IOException: failed to decrypt safe contents entry。需要通過OpenSSL轉換一下:
1)openssl pkcs12 -in mycerts.pfx -out mycerts.pem
2)openssl pkcs12 -export -in mycerts.pem -out mykeystore.p12
通過keytool的-list命令可檢查下密鑰倉庫中的內容:
keytool -rfc -list -keystore mykeystore.p12 -storetype pkcs12
這里需要指明倉庫類型為pkcs12,因為預設的類型為jks。這樣此密鑰倉庫就即包含證書信息也包含私鑰信息。

『陸』 安卓7.0以上手機寫入系統證書

記錄一場手動寫入系統證書

谷歌在安卓7.0修改了安全策略,用戶添加的CA證書不能再用於安全連接,對於https傳輸的數據就抓取不到了,會顯示<unknown>。
我的解決方法是將charles的CA證書安裝進系統信任的證書目錄下,這樣在開啟charles代理的時候,系統就會認為CA證書安全,從而可以獲取https數據。

用 「openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem」計算出hash值,並將後綴設為0

生成hash後,替換對應名稱重新生成文件
//cer格式
openssl x509 -inform DER -text -in xxx.cer > 0dd2455e.0
//pem格式
openssl x509 -inform PEM -text -in xxx.pem > 0dd2455e.0

然後通過設置charles代理就可以查看到https的數據了。

『柒』 mitmproxy-ca-cert.pem手機證書文件安裝(一直安裝不上,折磨我了兩天!)

在mitmproxy軟體證書配置中,其中手機的證書安裝過程一般為:

「將mitmproxy-ca-cert.pem」文件發送到手機上,點擊證書文件,便會出現一個安裝窗口。」

但是,我的Android手機並不識別pem文件,如華為榮耀10 ,華談掘為Nova青春版。

解決方法為:

(打開手機「設置」;選擇「含臘核安全和隱私」;點擊「更多安全設置」,找到「從SD卡安裝」;搜索該證書文件,點擊安裝.)

1    設置

2  安全與隱私

3  更多安全設置

4  從存儲局返設備安裝

5  選中證書文件,點擊安裝

6  輸入鎖屏密碼

7  給安裝文件命名mitmproxy

8  結束了,完成安裝!!!

閱讀全文

與androidpem證書相關的資料

熱點內容
用演算法控制玩家的行為 瀏覽:478
androidsdk17下載 瀏覽:792
怎麼給單獨表格添加密碼 瀏覽:12
下載壓縮密碼 瀏覽:259
android系統上編程 瀏覽:468
單片機模擬i2c從機 瀏覽:236
教育年報系統伺服器如何開啟 瀏覽:840
對稱密鑰加密後的長度 瀏覽:292
微製造編程軟體下載 瀏覽:106
旋住宿酒店用哪個App最好 瀏覽:60
三菱編程中怎麼創建子程序 瀏覽:199
在單片機溫度輸入採集信號有 瀏覽:684
電腦雲伺服器同步 瀏覽:418
方舟生存進化手游版怎麼轉伺服器 瀏覽:89
哪個app可以聽小說 瀏覽:160
網路發送數據如何加密 瀏覽:201
教材完全解讀pdf 瀏覽:820
什麼是多台伺服器 瀏覽:36
菜鳥音樂編輯app哪個好 瀏覽:547
人工魚群演算法matlab 瀏覽:82