引言
Charles分析报文常遇到的问题:SSLHandshake: Received fatal alert: certificate_unknown
I SSLHandshake: Received fatal alert: certificate_unknown的解决方案
1.1 问题分析
现象:不采用Charles 代理的时候,可以正常访问,当使用Charles的时候报certificate_unknown
原因:由于https的cipher rc4不够安全,在charles 3.11中如果服务端只支持rc4就会报错SSLHandshake: Received fatal alert: handshake_failure
1.2 解决方案
- 获取二进制证书,并在手机去安装和信任cer
可以使用以下openssl命令来获取到服务器的公开二进制证书(以google为例):"openssl s_client -connect www.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer"
- 若还没解决问题,配置NSAppTransportSecurity信息允许http 连接,当然也包括允许https的RC4-SHA
这种https的SSL证书 属于不太安全的那种,如果一定要用Charles的话,只能将app的SSL验证放开,达到允许请求http的级别就可以抓包了。
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>