charles如何抓取https數據包的?
https使用ssl加密,原理下面的連接解釋的很清楚
HTTPS那些事(一)HTTPS原理
我的問題是,如果瀏覽器和伺服器之間的通信都用瀏覽器隨機生成的密碼加密,並且這個密碼是通過一個公鑰加密後傳給伺服器的,並且只有用伺服器自己的私鑰才能解密出這個密碼。那麼charles是如何將加密的請求解密成明文的呢?
簡單的說就是中間人攻擊,也就是「man-in-the-middle attack」
先來看一下charles的document:
「Charles can be used as a man-in-the-middle HTTPS proxy, enabling you to view in plain text the communication between web browser and SSL web server.
Charles does this by becoming a man-in-the-middle. Instead of your browser seeing the server』s certificate, Charles dynamically generates a certificate for the server and signs it with its own root certificate (the Charles CA Certificate). Charles receives the server』s certificate, while your browser receives Charles』s certificate. Therefore you will see a security warning, indicating that the root authority is not trusted. If you add the Charles CA Certificate to your trusted certificates you will no longer see any warnings – see below for how to do this.」
先說一下https使用的非對稱加密的原理。等等說非對稱加密之前還要說下對稱加密的原理。簡單來說,對稱加密就是加密解密使用同一個密鑰。瀏覽器和伺服器交互的話一般會動態生成一個密鑰,所以密鑰如何交換就成了問題。
下面引入非對稱密鑰,非對稱加密主要用於密鑰交換(也叫密鑰協商),能夠很好地解決這個問題。瀏覽器和伺服器每次新建會話時都使用非對稱密鑰交換演算法協商出對稱密鑰,使用這些對稱密鑰完成應用數據的加解密和驗證,整個會話過程中的密鑰只在內存中生成和保存,而且每個會話的對稱密鑰都不相同(除非會話復用),中間者無法竊取。
密鑰交換過程:伺服器的公鑰是公開的,私鑰是不公開的。瀏覽器先向伺服器取得公鑰,然後用公鑰加密自己的私鑰連同自己私鑰加密的請求一併發送給伺服器。伺服器使用自己私鑰解密得到瀏覽器的私鑰,使用瀏覽器的私鑰解密請求。然後再用瀏覽器的私鑰加密response發送回伺服器。
中間人攻擊是先偽裝伺服器向瀏覽器發送偽造的公鑰,從而取得瀏覽器的私鑰。這樣就完成的瀏覽器端的解密。伺服器端類似。
但是!!!https是可以防止中間人攻擊的,因為伺服器的公鑰是用證書的。charles偽造的證書一般瀏覽器會警告,所以我們需要將charles的證書認為可靠的。從而實現中間人。
關於iOS 9的無法使用Charles抓包的問題。
SSL Proxying with iOS 9
You need to disable App Transport Security in your app to use Charles SSL Proxying with apps running on iOS 9.
To disable ATS you need to add keys to your app"s Info.plist file, as below. See this tech note from Apple for more information.
You must remember to re-enable ATS before you release your app to take advantage of the security that ATS provides.
&
&
&
&
Note that this means that you cannot use Charles to observe SSL traffic from apps that you do not control.
ref: FAQs ? Charles Web Debugging Proxy
About ATS:Cocoa Keys
簡單地說,iOS的ATS是一種對安全的加強。在About ATS裡面我們可以看到ATS對證書的一些限制。現在無法使用Charles,則是因為iOS 9 認為這個連接不安全,目前的解決方案是禁用ATS。長遠來看,要麼Charles的證書能夠是ATS眼中的『安全證書』,要麼ATS自己修改spec將Charles的證書認為是安全的,但是這兩種方法目前看來可能還需要一段時候。
ok,over。
如滿意求點贊。
網上的回答零零散散的,以抓取安卓手機訪問googleplay https包為例,做了張詳細的流程圖
v3.11,5版本,mac 抓包https,提示:unknown,一直抓不到內容 怎麼辦呢(手機安裝有證書)
最新版charles 導入證書即可。
樓主告訴我你charles 具體版本我告訴你;
推薦閱讀:
※黑客說HTTPS不再安全,一種新攻擊可成功繞過,是噱頭還是實錘?
※HTTP/2.0 相比1.0有哪些重大改進?
※HTTPS 可能被這樣劫持嗎?
TAG:HTTPS |