V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
user0506
V2EX  ›  程序员

有没有什么程序可以把客户端 HTTP 请求“包装”成 HTTPS 请求发给网站的?

  •  
  •   user0506 · 2019-07-11 17:57:39 +08:00 · 3905 次点击
    这是一个创建于 1742 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有这样的程序(中间程序):

    我的程序 <--(HTTP 协议)--> 中间程序 <--(HTTPS 协议)--> 任意目标网站

    比如自己向 localhost:80 发送 GET / HTTP/1.1\r\nHost: www.baidu.com ,中间程序可以把原先的 HTTP 请求包装成 HTTPS 并且原样发给目标网站,有这样的程序吗?

    部署的程序目前只做了 HTTP 支持,要加 HTTPS 的话又得等好久上线,这样的中间程序平台不限,Windows/Linux/Mac 都可以,任务太重,本来原本不是我负责的,我也一点都不了解这部分,现在头都大了,求指教。

    28 条回复    2019-07-12 10:10:56 +08:00
    lower
        1
    lower  
       2019-07-11 18:00:57 +08:00
    我怎么觉得用反向代理能搞定呀?
    ysc3839
        2
    ysc3839  
       2019-07-11 18:02:34 +08:00 via Android
    nginx
    WuwuGin
        3
    WuwuGin  
       2019-07-11 18:03:15 +08:00
    cd (删除) n 吧,cloudflare 这种就有这个功能,不知道国内谁支持
    chinesestudio
        4
    chinesestudio  
       2019-07-11 18:06:06 +08:00 via Android
    https 反代 http 这个容易 反过来没有试过
    RickyC
        5
    RickyC  
       2019-07-11 18:08:52 +08:00 via iPhone
    可以看一下阿里云的 CDN,把一个域名指向到源站
    然后可以设置成 https,也可设置 http 自动跳转至 https
    阿里云有免费的 https 证书,有效期 1 年
    xeaglex
        6
    xeaglex  
       2019-07-11 18:14:32 +08:00 via Android
    去了解下 CONNET 方法的代理原理吧
    annielong
        7
    annielong  
       2019-07-11 18:14:36 +08:00
    应该也算中间人攻击吧,等于伪造目标网站的证书,然后和目标网站通讯
    reus
        8
    reus  
       2019-07-11 18:15:52 +08:00
    都不知道你想做什么
    是想给只支持 HTTP 的后端加上 HTTPS ?那配置 nginx 提供 https,然后以这个 http 做上游就行了,你想出的那个方案,我不知道用来干嘛的。
    HTTPS 代理只能包装”连接“,用 OPTION 方法,不能代理”请求“,因为 https 本来就是用来防止中间人攻击的,不可能拆分成“请求”
    reus
        9
    reus  
       2019-07-11 18:21:59 +08:00
    修正 "OPTION" 方法,CONNECT 方法
    nomaka
        10
    nomaka  
       2019-07-11 18:28:28 +08:00 via iPhone
    stunnel
    ipwx
        11
    ipwx  
       2019-07-11 18:28:35 +08:00
    Squid 大概行,但是我没配置过。
    Destiny97
        12
    Destiny97  
       2019-07-11 19:00:42 +08:00 via Android
    阿里云的 cdn 支持,其他 cdn 不清楚
    zado
        13
    zado  
       2019-07-11 20:59:22 +08:00
    Nginx 可以,用 Nginx 代理一下就可以了。
    twl007
        14
    twl007  
       2019-07-11 21:01:35 +08:00 via iPhone
    https 转 http 都可以的好么
    greatghoul
        15
    greatghoul  
       2019-07-11 21:07:13 +08:00
    腾讯云云函数配置 api 网关就可以。
    greatghoul
        16
    greatghoul  
       2019-07-11 21:08:16 +08:00
    ziseyinzi
        17
    ziseyinzi  
       2019-07-11 21:26:13 +08:00 via Android
    我感觉楼上都理解错了……楼主的意思是他写的客户端只做了 http 没做 https,然后现在想粗暴地加上 https 功能?
    runtu2019
        18
    runtu2019  
       2019-07-11 21:53:14 +08:00
    Nginx 可以正向代理的,监听 80 端口,proxy_pass 参数手动改为 https 试试!
    本来是想着叫你用 python flask+requests 自己写个脚本的,反正也不怎么费事
    gamexg
        19
    gamexg  
       2019-07-11 22:14:27 +08:00
    nginx 等都应该能够做到,
    不行的话自己写个程序,如果不考虑 WebSocket 等协议支持的话不算难。
    Tomorr
        20
    Tomorr  
       2019-07-11 22:18:26 +08:00
    https://bird.ioliu.cn
    https://proxy.zme.ink
    msg7086
        21
    msg7086  
       2019-07-11 23:01:01 +08:00
    @ziseyinzi 你说得没错啊。楼上哪里理解错了么。
    这明显就是一个 Nginx 解决的事情呀……
    yulon
        22
    yulon  
       2019-07-12 05:02:26 +08:00
    说 CONNECT 的想什么呢,CONNECT 是 HTTPS 对 HTTPS 的,连接建立之后就是纯到不能再纯的 TCP 流了,又不会把 HTTP 转换成 HTTPS。

    这种直接用中间程序代理 HTTP 请求,然后自己用 HTTPS 请求,再把响应的数据传回去就行了,根本不用管什么 CONNECT,又不会接收到 HTTPS 请求,怎么可能会出现 CONNECT。
    Hackerl
        23
    Hackerl  
       2019-07-12 08:23:18 +08:00 via Android
    stunnel
    wnpllrzodiac
        24
    wnpllrzodiac  
       2019-07-12 08:30:53 +08:00 via Android
    服务端的话,套个反代就好了,你是客户端。nginx https 前向代理?本来想做的,觉得挺麻烦的。我的用户不能访问国外网站,我就让他们机器上的客户端请求发到我的本地机器(支持国外网站)。我的机器再转发到国外。前段时间由于一些原因,只能套 cf https 访问了。我就不好搞了。nginx https 前向不大好搞
    neroxps
        25
    neroxps  
       2019-07-12 08:42:56 +08:00
    楼主的意思是你访问任意 http 网站的时候,发出去的内容其实是 https ???而原来的网站其实还是 http ???能这样玩吗?注意是任意网站,任意网站的意思是他并没有服务器的管理权限喔。意思是对方网站没有提供 https 服务你也可以使用 https 向其访问???没这种东西吧?
    krixaar
        26
    krixaar  
       2019-07-12 09:39:12 +08:00
    @neroxps 那就再加个中间层:客户端<=HTTP=>代理 1<=HTTPS=>代理 2<=ANY=>任意网站 XD
    oukichi
        27
    oukichi  
       2019-07-12 10:03:40 +08:00
    https 端口是 443 ……你再怎么包装发到 80 端口还不是一样……
    neroxps
        28
    neroxps  
       2019-07-12 10:10:56 +08:00
    @krixaar 这样有什么意义,楼主是不是在问某个不可描述的软件啊?哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5658 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:31 · PVG 11:31 · LAX 20:31 · JFK 23:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.