小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
引言
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>
see also
1、iOS网络安全优化:SSL证书验证, Charles再也无法抓你的请求数据;对请求参数进行签名;2、不走全局proxy的方案;3、允许不验证SSL证书;4、拦截请求;5、DoH &DoT6、SDL
更多内容请关注#小程序:iOS逆向
,只为你呈现有价值的信息,专注于移动端技术研究领域。