Rust 如何实现 HTTPS 连接,要求拿到原始 socket 而不是加密后的 socket - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vituralfuture
V2EX    Rust

Rust 如何实现 HTTPS 连接,要求拿到原始 socket 而不是加密后的 socket

  •  
  • &nsp; vituralfuture 2024-03-14 16:15:38 +08:00 2357 次点击
    这是一个创建于 624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    计网课程设计的一个要求是只能使用 socket ,即 TCP 以上需要自己实现,目前已经实现了一个类似 python 的 requests 的 HTTP 请求库,但我发现在访问我的博客时,因为开启了 HSTS ,自动 301 到 HTTPS ,导致无法访问

    在网上搜索了一番,这方面的情况reddit 这篇帖子 总结的很好。不过我并没有找到那种能由我自己控制握手,协商等整个 HTTPS 流程的,基本上是提供加密后的 socket (暂时称呼它为 securit socket),如tokio-rustls,openssl 提供的一个例子我觉得比较接近答案了,但仍然有不符合课设要求的嫌疑

    总的来说,需求如下

    1. rust 实现,因为我使用了 flutter-rust-bridge ,这也是作为一个亮点
    2. 至少能够在 linux,windows,android 上使用
    3. 必须自己操作原始的 socket
    4. 不要太复杂!我目前对 TLS 并不是很熟悉,计网课程也是完全没讲 TLS

    当然我也有点觉得课程的要求有点无理了,所以我会花有限的时间摸索一下

    9 条回复    2024-04-19 20:56:31 +08:00
    rrfeng
        1
    rrfeng  
       2024-03-14 16:32:36 +08:00 via Android
    不用 tls 库你手搓 RSA DH ECDSA ?扯淡呢。
    vituralfuture
        2
    vituralfuture  
    OP
       2024-03-14 16:35:17 +08:00 via Android
    @rrfeng 加密算法应该还是可以用库的,只要自己实现握手,协商这一系列流程,然后拿到秘钥,把 http 报文加密一下就行
    zwy100e72
        3
    zwy100e72  
       2024-03-14 17:01:08 +08:00
    不要难为你自己了,考虑到这个课程设计的范围,直接用 http 服务吧
    libook
        4
    libook  
       2024-03-14 17:46:17 +08:00
    课题没要求支持 HTTPS 的话,你就只做支持 HTTP 的是不是就行了。

    除非你们老师就是想让你们自己实现 TLS 协议。
    PTLin
        5
    PTLin  
       2024-03-15 09:30:55 +08:00
    照着 rustls 抄一个吧,要不然 tls 的好几次握手,证书校验,密钥协商生成密钥等等,够你喝好几壶的了。
    不过按照我的经验老师可能也半懂不懂你的意思吧,没想让你自己实现整个 tls 。
    RTSmile
        6
    RTSmile  
       2024-03-17 11:06:58 +08:00 via iPhone
    有一说一,我感觉你老师压根没仔细看你写的那一段话,只是单纯的看了说要用第三方库就觉得不可以。
    课设让自己实现 TLS 意义不大,不光繁琐,还没有任何的实用意义。实际生产使用的 tls 库都是要通过严格的安全审计的,课设这种就算自己设计出来了一个 tls 估计也是一堆漏洞。
    bli22ard
        7
    bli22ard  
       2024-03-18 17:58:39 +08:00
    什么实力,自己实现 tls
    hanyuwei70
        8
    hanyuwei70  
       2024-03-22 16:05:37 +08:00
    如果只是作业,你可以用一个带 HTTP 的服务。
    uiiytwyfsdtr
        9
    uiiytwyfsdtr  
       2024-04-19 20:56:31 +08:00
    自己原生撸一遍 TLS 你也是够勇气的少年...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 19:47 PVG 03:47 LAX 11:47 JFK 14:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86