逆向小知识:SSLHandshake: Received fatal alert: certificate_unknown

726 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

引言

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 解决方案

  1. 获取二进制证书,并在手机去安装和信任cer

可以使用以下openssl命令来获取到服务器的公开二进制证书(以google为例): "openssl s_client -connect www.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer"

  1. 若还没解决问题,配置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

blog.csdn.net/z929118967/…

更多内容请关注#小程序:iOS逆向,只为你呈现有价值的信息,专注于移动端技术研究领域。