前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP请求配置客户端SSL证书

HTTP请求配置客户端SSL证书

作者头像
愧怍
发布2022-12-27 20:32:44
3K0
发布2022-12-27 20:32:44
举报

在学习安卓逆向的时候,遇到一个 APP,服务端检测请求的 SSL 证书,需要提交 SSL 证书上去才能正常发送请求。而在开启抓包和协议复现的时候,请求是能正常发出去,但是服务器会返回 400 错误。于是便有了这篇文章来记录下。

说明

由于是服务端效验客户端发送的证书,所以使用代理服务器(FD,Charles 等)抓包是会替换本地证书,当服务器效验客户端发送的证书与服务器内的证书不一致,那么就直接返回 400 错误,实际上请求还是能够发送出去,只是被服务器给拒绝了。俗称双向认证

所以解决办法就是在请求的时候,将正确的证书也一同发送过去,这样服务端效验时就会将正常的响应结果返回给客户端,也就是配置自定义证书

例子

APP 例子:隐约

具体如何拉取证书,就是安卓逆向相关的部分了,这里我也只提供证书文件,不提供 app。

贴上下载地址及密码

证书: https://img.kuizuo.cn/cert.p12

密码: xinghekeji888.x

证书转化

证书格式转换 (myssl.com)

SSL 在线工具-在线证书格式转换-证书在线合并-p12、pfx、jks 证书在线合成解析-SSLeye 官网

也可使用 OpenSSL 工具来进行转化证书

HTTP 发送请求

node 的 axios

代码语言:javascript
复制
const axios = require('axios').default
const fs = require('fs')
const https = require('https')

axios
  .post(
    `https://app.yyueapp.com/api/passLogin`,
    {
      mobile: '15212345678',
      password: 'a123456',
    },
    {
      httpsAgent: new https.Agent({
        cert: fs.readFileSync('./cert.cer'),
        key: fs.readFileSync('./cert.key'),
        // pfx: fs.readFileSync('./cert.p12'),
        // passphrase: 'xinghekeji888.x,
      }),
    },
  )
  .then((res) => {
    console.log(res.data)
  })
  .catch((error) => {
    console.log(error.response.data)
  })

如果没有配置 httpsAgent,也就是没有配置证书,那么返回 400 错误 400 No required SSL certificate was sent

配置成功将会得到正确的响应结果

代码语言:javascript
复制
{ code: 998, msg: '系统维护中...', data: null }

python 的 requests

requests 不支持 p12 格式的证书,所以需要使用其他的证书格式,如下

代码语言:javascript
复制
import requests

r = requests.post('https://app.yyueapp.com/api/passLogin', data={
                  'mobile': '15212345678', 'password': 'a123456'}, cert=('./cert.cer', './cert.key'))
print(r.status_code)
print(r.text)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明​
    • 例子​
      • 证书转化​
      • HTTP 发送请求​
        • node 的 axios​
          • python 的 requests​
          相关产品与服务
          SSL 证书
          腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档