APP測試之雙向證書認證


ios用到的工具:

ssl kill switch

Fiddler

兩個工具的安裝辦法:

越獄的IOS上面安裝ssl kill switch

  之前一直抓的是 ios的 https數據包,雙向證書認證

  對於安卓的沒使用過,今天看到了,收藏一下

=====================================

0x02 雙向證書認證與解決方法

在對soulApp進行抓包的時候,提示網絡錯誤,請檢查網絡后重試~

本來以為直接把這個okhttp的證書hook修改成系統默認的即可,就沒有詳細說明這一部分,結果有網友問雙向證書認證這部分是如何處理的,就詳細來說明一下如何處理。這里時由於采用了雙向證書認證的緣故,所以抓包返回400錯誤,直接瀏覽器訪問https://account.soulapp.cn/ ,也是不行的

提示No required SSL certificate was sent.如果要訪問成功,就要帶上證書。

關於雙向證書認證:客戶端有自己的密匙,並持有服務端的證書,服務端給客戶端發送數據時,需要將服務端的證書發給客戶端驗證,驗證通過才運行發送數據,同樣,客戶端請求服務器數據時,也需要將自己的證書發給服務端驗證,通過才允許執行請求。詳細的內容可以參考https://blog.csdn.net/enweitech/article/details/53813183。

我們本地來測試一下,簡單介紹一下如何搭建雙向證書認證環境。

1.雙向證書認證服務器的搭建

創建一個證書的步驟:

(1)生成系統私鑰

(2)生成待簽名證書

(3)生成x509證書, 用CA私鑰進行簽名

證書的生成過程略。

以tomcat服務器為例。將生成的服務端證書server.p12和客戶端信任證書truststore.jks放入conf目錄下。修改tomcat下conf/server.xml文件,去掉https的注釋。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />

修改為

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
truststoreFile="conf/truststore.jks" truststorePass="123456" truststoreType="JKS"
keystoreFile="conf/server.p12" keystorePass="123456" keystoreType="PKCS12"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />

此時clientAuth="false",未開啟客戶端校驗。

啟動服務器並訪問。

雖然提示錯誤但是點繼續前往即可訪問。

設置開啟客戶端校驗,即clientAuth="true"

然后重啟后訪問

無法正常訪問,想要正常訪問,瀏覽器導入證書即可

下一步然后輸入密碼

刷新頁面,提示選擇證書。

確定后即可訪問。

2.soulAPP雙向認證解決方法

同理這里soulApp也可以這樣做。

這里列舉三種方法來完成客戶端的驗證。歸根結底都是證書的利用。

a)瀏覽器導入證書

利用soulApp中的證書和密碼生成瀏覽器證書。

openssl pkcs12 -export -inkey client.key -in client.crt -out soulclient.pfx

證書的位置位於資源文件assets中。

標記的1處輸入的是soul證書的密碼,2和3為證書導入瀏覽器自己設置的密碼,這里為123456

然后導入瀏覽器,重新訪問https://account.soulapp.cn/

選擇證書后確定。

根據頁面顯示內容可以發現此時導入證書后可以正常訪問。

b)利用程序完成認證

利用程序的話,參考cn.soulapp.android.api.e.a()方法,進行證書的操作。

精簡之后主要代碼如下:

然后利用httpclient進行http請求。

當訪問不加證書的效果:

使用證書的結果:

由於這是這是之前的數據包,所以已經過期,再次使用需要更換時間戳和簽名,但結果成功的。

c)利用抓包工具

使用抓包工具,這里以burp為例。

未導入證書抓包結果:

提示400錯誤,我們在burp中導入證書

選擇證書並輸入密碼。

證書導入成功。

再次抓包

已經可以正常抓取了。

當然使用其他方法也是可行的,這里就不再列舉了。

0x03 總結

本文主要是為了解決APP與服務器之間的雙向證書認證問題,沒有太多的技巧,主要就是證書的使用。如果服務器采用了雙向認證,那么一般在APP中有證書和證書密碼的存在,找到之后導入抓包工具即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM