https白嫖方案

1. 准备域名

既然是白嫖,那么域名我们就使用免费的域名就好了,我在freenom网站上注册的。免费的都是比较偏的域名后缀,不过无所谓,反正测试用而已

做好域名解析,我这里本地测试使用,所以解析到自己的内网ip(能指向本机就行啦)

2. 准备https证书

CA证书的话,有两种选择,一种使用自签名证书,一种使用CA官方证书;

区别

  1. 自签名证书是“黑户”,只能起到https加密的作用,但是无法被浏览器、操作系统承认
  2. 具体效果就是浏览器访问时会显示“不安全连接”的图标和提示
  3. 自签名证书无法防范“中间人攻击”方式,其实还是不安全的通信方式(客户端的可以自己去实现加密通信策略)
  4. 使用CA证书需要付费,并且有时限,要考虑成本和注意到期续费问题(过期的CA证书等同于自签名证书)

2.1 免费CA证书申请

免费的CA证书申请渠道很多,基本是1年期限,我这里使用freessl,注册流程忽略,没什么好说的(其中一步域名验证,只要做好相关解析,等解析生效验证过关即可)

2.1.1 生成CA证书

申请成功后,可以启动网站提供的客户端“keyManager”,在“证书管理--选中某个证书--更多--所有格式--输入私钥加密密码--导出”

导出后有多个文件夹,对应不同的web服务器,我将使用tomcat服务器,所以选用“.jks”后缀的私钥

3. 准备java web项目

我这里准备了个简单的spring boot项目,写了一个简单的接口,用于后续移动端https请求用

核心代码

入口类

package com.lawyee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class AppBoot extends SpringBootServletInitializer {

    public static void main(String[] args) {

        SpringApplication.run(AppBoot.class);
    }

    // spring boot项目部署到独立的tomcat服务器上,需要继承SpringBootServletInitializer类,重写配置资源路径方法
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AppBoot.class);
    }
}

准备接口

package com.lawyee.controller;

import com.lawyee.domain.Order;
import com.lawyee.domain.ResVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {


    @RequestMapping("/findById")
    public ResVo findOne(String sn) {

        if (null == sn) {
            log.error("查询订单号为空");
            return new ResVo(0, "查询订单号为空", null);
        }

        if (sn.length() < 6) {
            log.warn("订单号不能小于6位");
            return new ResVo(0, "订单号不能小于6位", null);
        }

        Order order = new Order(sn, new Date(), "雅迪电动车");
        ResVo resVo = new ResVo(1, "查找到1个符合订单", order);

        log.debug("查询出1个结果,订单号:{},详细信息:{}", sn, order);

        return resVo;
    }
}

4. 准备https的web服务器

  1. 我这里使用apache-tomcat-8.5.31做web服务器,从官网下载即可;
  2. 把之前第二步中生成的CA证书tomcat目录下,.jks后缀的文件,拷贝到tomcat根目录下的conf文件夹中
  3. 将第三步中的java web工程,打包成war包,拷贝到tomcat根目录下的webapps文件夹中
  4. 修改conf文件夹下的server.xml配置文件

 
  
  
  
  
  
  
  
  

  
  
    
    
  

  

    
    
    
    


    
    

    

      
        
      

      
        

      
    
  

  1. 修改conf文件夹下的web.xml配置文件,让访问http也跳转到https,在文件最后,添加以下配置代码
    
        
        CLIENT-CERT
        Client Cert Users-only Area
    
    
        
      
        SSL
        /*
      
      
        CONFIDENTIAL
      
     
  1. 启动服务器后,使用证书对应的域名访问,浏览器地址栏左侧会显示一个锁的图标,点击开来会显示连接是安全的;(如果使用本地ip或者其他解析的域名,或者自签名证书,这里一样是显示不安全的链接)
  2. 注意:CA证书、证书对应的域名必须一致(包括记录值,除非你的证书是*通配的<通配的证书很贵的>)

5. 奉上以上文件

oschina项目地址

6. 客户端请求看效果

这里用iOS客户端发起请求,再用青花瓷抓包看看https通信的效果

6.1 准备OC网络请求代码

[[AFHTTPSessionManager manager] GET:@"https://www.lixian.ml/addr/order/findById" parameters:@{@"sn": @"6666231"} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {        
        NSLog(@"responseObject = %@", responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {        
        NSLog(@"error = %@", error);
}];

6.2 用青花瓷抓包

https抓包效果:通信自动被加密

使用https抓包截图.png

http抓包效果:通信未加密,全是明文

使用http的抓包截图.png

推荐文章
  • 用 HTTPS 就安全了?HTTPS 会被抓包吗?

你可能感兴趣的:(https白嫖方案)