monkeyWie / proxyee

HTTP proxy server,support HTTPS&websocket.MITM impl,intercept and tamper HTTPS traffic.
MIT License
1.52k stars 567 forks source link

救命贴续,那个点错了给关了! #70

Closed wayddmldbzz closed 4 years ago

wayddmldbzz commented 4 years ago

第一个能实现就行了,还得麻烦哥们给我写个代码段,在哪个类下面改,对这个ssl认证知识和netty的逻辑不太熟不知道咋改,辛苦了!

wayddmldbzz commented 4 years ago

@monkeyWie 求指导啊,实在不知道在哪里改!

monkeyWie commented 4 years ago

我试了下发现没这么好实现啊,还是得配合证书一起

wayddmldbzz commented 4 years ago

这个要改的证书和私钥我有,怎么改,哥们指导一下,辛苦看看啦,救命的事!

monkeyWie commented 4 years ago

@wayddmldbzz 这个需求太奇怪了吧,为什么不安装根证书去做呢

monkeyWie commented 4 years ago

还有个问题,目标服务器如果会检测 host 请求头那么也实现不了

wayddmldbzz commented 4 years ago

这个没事,公司内部系统不回校验请求头,而且是纯内网调用。

wayddmldbzz commented 4 years ago

@monkeyWie 主要还是安装根证书去做,但是有的高版本手机会不行,所以为了不阻塞使用,还得支持这个,否则肯定会被diss

monkeyWie commented 4 years ago

@wayddmldbzz 有个问题,比如你现在是 aaa.test.ooo.com 改成 bbb.test.ooo.com,你的bbb.test.ooo.com证书是否支持aaa.test.ooo.com域名?

wayddmldbzz commented 4 years ago

支持,aaa.test.ooo.com和bbb.test.ooo.com证书是一个

monkeyWie commented 4 years ago

加了个拦截器,你试试

  new HttpProxyServer()
                .tunnelIntercept(requestProto -> {
                    if(requestProto.getHost().equals("aaa.test.ooo.com")){
                        requestProto.setHost("bbb.test.ooo.com");
                    }
                })
                .start(9999);
wayddmldbzz commented 4 years ago

万分感谢,我现在试,这个拦截器用倒入证书吗?

monkeyWie commented 4 years ago

不需要安装证书

wayddmldbzz commented 4 years ago

哥们虽然HOST变更了,但是调用的还是改之前的服务。

monkeyWie commented 4 years ago

额 你们是用的nginx做的反向代理吗?

wayddmldbzz commented 4 years ago

目标服务器nginx正向代理

到断点那,已经替换了,下面进隧道拦截器数据状态正常吗,channel里面那个R:127.0.0.1:58068是我本地postman也就是客户端,您看看这数据对吗?

monkeyWie commented 4 years ago

数据没问题,应该还是nginx那边的问题,因为nginx会根据host请求头路由到对应的服务,虽然连接的是bbb.test.ooo.com但是nginx接收到的host请求头还是aaa.test.ooo.com

wayddmldbzz commented 4 years ago

那这个拦截器能否修改请求头呢?我试一下从最开始进来的时候改一下?

monkeyWie commented 4 years ago

改不了的,没有安装根证书不行

wayddmldbzz commented 4 years ago

就是客户端必须安装证书?

monkeyWie commented 4 years ago

是啊,你这个场景实现条件太苛刻了

wayddmldbzz commented 4 years ago

nginx能不能改成用链接地址转发,如果能的话我推动改nginx在配合你改的就行了吧

wayddmldbzz commented 4 years ago

哥们有转机了,我刚了解了一下,不明文也可以修改请求头,https只加密请求体。 于是我做了一点点改动强行改请求头,如下 image image 这样改已经能成功请求到修改的服务器了,但是前两次不行,后面就可以了。。。

monkeyWie commented 4 years ago

@wayddmldbzz https所有报文都加密的

wayddmldbzz commented 4 years ago

@monkeyWie 误导了,改了也不行,最后还是我用了你的新改的转发,直接转到我自己的nginx,我自己的nginx配证书设置请求头,再转到目标nginx解决的。总之谢谢哥们救命之恩。。。万分感谢!

monkeyWie commented 4 years ago

好了就行😃

liming1985 commented 4 years ago

tunnelIntercept 这个拦截器可以处理https的吗

wayddmldbzz commented 4 years ago

可以,但是只能改目标地址