前几天在对一个使用 Qt+OpenSSL 的程序抓 https 包,然而它不使用系统根证书。
一开始去搜索 x64dbg bypass openssl certificate error 但没有搜索到相关内容。
然后就想 OpenSSL 里面应该有个检查 SSL 证书的逻辑,然后进行一个条件跳转。
于是去搜索 openssl ignore certificate error,得知要用 SSL_CTX_set_cert_verify_callback 设置一个永远返回 1 的 callback。
继续搜索 SSL_CTX_set_cert_verify_callback 的源代码,发现设置了 ctx->app_verify_callback ,继续找下去,发现 ssl_set_peer_cert_type 中如果 ctx->app_verify_callback 为 NULL 时则会调用 X509_verify_cert 。
于是最终方案很简单,修改 X509_verify_cert 让其永远返回 1 即可。
一开始去搜索 x64dbg bypass openssl certificate error 但没有搜索到相关内容。
然后就想 OpenSSL 里面应该有个检查 SSL 证书的逻辑,然后进行一个条件跳转。
于是去搜索 openssl ignore certificate error,得知要用 SSL_CTX_set_cert_verify_callback 设置一个永远返回 1 的 callback。
继续搜索 SSL_CTX_set_cert_verify_callback 的源代码,发现设置了 ctx->app_verify_callback ,继续找下去,发现 ssl_set_peer_cert_type 中如果 ctx->app_verify_callback 为 NULL 时则会调用 X509_verify_cert 。
于是最终方案很简单,修改 X509_verify_cert 让其永远返回 1 即可。