用netty造一个简易的fiddler ( 一 生成证书重庆幸运农场 )

本人曾在上一家公司,搞过半年的爬虫.因此认识了这个叫 fiddler 的工具.当然市面上还有 charles ,开源也有 anyproxy whistle.到最后我还是喜欢用fiddler.似乎有点念旧.而现在这家公司是做erp的.项目用到了netty.

  因此才有这个念头.造一个简单的轮子-简易的fiddler

  Fiddler是一个http协议调试代理工具重庆幸运农场 QQ2952777280【话仙源码论坛】hxforum.com【木瓜源码论坛】papayabbs.com,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据。摘自百度百科.

  用过上面的工具都知道,捕获https请求都要安装证书的.本篇内容:生成证书

  网上很多都是使用openssl生成证书的.其实用java完全可以生成的.

复制代码
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.59</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
复制代码

复制代码
Security.addProvider(new BouncyCastleProvider());

KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(2048, new SecureRandom());
KeyPair keyPair = keyPairGenerator.genKeyPair();

X500NameBuilder builder = new X500NameBuilder(BCStyle.INSTANCE).addRDN(BCStyle.C, "C");
builder.addRDN(BCStyle.L, "L").addRDN(BCStyle.O, "O").addRDN(BCStyle.ST, "ST");
X500Name x500Name=builder.addRDN(BCStyle.OU, "OU").addRDN(BCStyle.CN, "CN").build();

Date notBefore = new Date(System.currentTimeMillis());
Date notAfter = new Date(System.currentTimeMillis() + 730 48 3600000L);//two year
X509v3CertificateBuilder xcBuilder = new JcaX509v3CertificateBuilder(
x500Name, BigInteger.valueOf(1), notBefore, notAfter, x500Name, keyPair.getPublic());
xcBuilder.addExtension(Extension.basicConstraints, false, new BasicConstraints(true));
xcBuilder.addExtension(Extension.subjectKeyIdentifier, false, new JcaX509ExtensionUtils().createSubjectKeyIdentifier(keyPair.getPublic()));
xcBuilder.addExtension(Extension.authorityKeyIdentifier, false, new JcaX509ExtensionUtils().createAuthorityKeyIdentifier(keyPair.getPublic()));

ContentSigner signer = new JcaContentSignerBuilder("SHA256WithRSAEncryption").setProvider("BC").build(keyPair.getPrivate());
X509Certificate certificate = new JcaX509CertificateConverter().setProvider("BC").getCertificate(xcBuilder.build(signer));
String caPath="d:\ca.crt";
String privateKeyPath="d:\private.der";
saveX509Certificate(certificate.getEncoded(), caPath);
savePrivateKey(new File(privateKeyPath), keyPair.getPrivate(),null);

复制代码

复制代码
public static void saveX509Certificate(byte[] content, String caPath) throws IOException, URISyntaxException {

    PemWriter pemWriter = null;
    try {
        pemWriter = new PemWriter(new OutputStreamWriter(new FileOutputStream(new File(caPath))));
        pemWriter.writeObject(new PemObject("CERTIFICATE", content));
    } finally {
        try {
            if (pemWriter != null) {
                pemWriter.close();
            }
        } catch (IOException ignore) {

        }
    }

}
public static void savePrivateKey(File file, PrivateKey privateKey, OutputEncryptor encryptor) throws IOException {
JcaPKCS8Generator jcaPKCS8Generator = new JcaPKCS8Generator(privateKey, encryptor);

StringWriter stringWriter = new StringWriter();
try (JcaPEMWriter pw = new JcaPEMWriter(stringWriter)) {
    pw.writeObject(jcaPKCS8Generator.generate());
}

FileUtils.writeByteArrayToFile(file, stringWriter.toString().getBytes());

}

复制代码
  运行上面代码都产生2个文件(ca.crt 是根证书 , private.der 是私钥).双击ca.crt,再点详细信息,就能看到下图右边那块了.下图是解释上面代码

  至此,我们已经生成好了ca 证书和私钥,下面是windows安装图解

  ps.2-3 步之间要点击下一步才行的.需要说明的是 openssl 和jdk 自带的 keytool 也是可以生成证书的.再次强调证书是要花钱买的.当然也有免费的

原文地址:http://blog.51cto.com/13879413/2147791

时间: 2024-10-28 14:24:02

用netty造一个简易的fiddler ( 一 生成证书重庆幸运农场 )的相关文章

fiddler makecert生成证书

makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012

javascript基础修炼(12)——手把手教你造一个简易的require.js

目录 一. 概述 二. require.js 2.1 基本用法 2.2 细说API设计 三. 造轮子 3.1 模块加载执行的步骤 3.2 代码框架 3.3 关键函数的代码实现 示例代码托管在我的代码仓:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 一. 概述 许多前端工程师沉浸在使用脚手架工具的快感中,认为require.js这种前端模块化的库已经过气了,的确如果只从使用场

Netty:一个非阻塞的客户端/服务器框架

Netty:一个非阻塞的客户端/服务器框架 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Netty是一个异步事件驱动的网络应用框架,为Java网络应用的开发带来了一些新活力.Netty由协议服务器和客户端所组成,可用于快速开发可维护的高性能软件.Netty应用框架及其工具简化了网络编程,而且由Netty社区进行维护. Netty还被归类为NIO客户端/服务器框架,用它能够快速.简易地开发网络应用,使得TCP和UDP套接字服务器的网络编程得以简化和

iOS:制作一个简易的计算器

初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有问题的,不是很完美,可能还有一些bug,再接再厉. 1 // 2 // ViewController.m 3 // 计算器 4 // 5 // Created by ma c on 15/8/25. 6 // Copyright (c) 2015年 bjsxt. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewContr

Angularjs,WebAPI 搭建一个简易权限管理系统

Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一) 1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 WebAPI项目主体结构 Angularjs前端主体结构 2. 前言 Angularjs开发CRUD类型的Web系统生产力惊人,与jQuery,YUI,kissy,Extjs等前端框架区别非常大,初学者在学习的过程中容易以自己以往的经验来学习Angularjs 往往走入误区,最典型的特征是在的开发过程中,使用

Socket 初识 用Socket建立一个简易Web服务器

摘自<Asp.Net 本质论>作者:郝冠军 //在.Net中.system.Net命名空间提供了网络编程的大多数数据据类型以及常用操作,其中常用的类型如下:/*IPAddress 类表示一个IP地址* IPEndPoint类用来表示一个IP地址和一个端口号的组合,成为网络的端点.* System.Net.Sockets命名空间中提供了基于Socked编程的数据类型.* Socket类封装了Socked的操作.* 常见的操作:* Listen:设置基于连接通信的Socket进入监听状态,并设置等

Tinywebserver:一个简易的web服务器

这是学习网络编程后写的一个练手的小程序,可以帮助复习I/O模型,epoll使用,线程池,HTTP协议等内容. 程序代码是基于<Linux高性能服务器编程>一书编写的. 首先回顾程序中的核心内容和主要问题,最后给出相关代码. 0. 功能和I/O模型 实现简易的HTTP服务端,现仅支持GET方法,通过浏览器访问可以返回相应内容. I/O模型采用Reactor(I/O复用 + 非阻塞I/O) + 线程池. 使用epoll事件循环用作事件通知,如果listenfd上可读,则调用accept,把新建的f

探秘Tomcat——一个简易的Servlet容器

即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器. 背景知识 既然说到servlet容器这个名词,我们首先要了解它到底是什么. servlet 相比你或多或少有所了解.servlet是用java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者. 容器 容器的概念很大,在这里

C 实现一个简易的Http服务器

引言 做一个老实人挺好的,至少还觉得自己挺老实的. 再分享一首 自己喜欢的诗人的一首 情景诗. 每个人总会有问题,至少喜欢就好, 本文 参照 http 协议   http://www.cnblogs.com/rayray/p/3729533.html html格式   http://blog.csdn.net/allenjy123/article/details/7375029 tinyhttpd 源码    https://github.com/EZLippi/Tinyhttpd 附录 本文最