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

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

  •  
  •   user0506 · 157 天前 · 2585 次点击
    这是一个创建于 157 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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