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

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

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

    计网课程设计的一个要求是只能使用 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  
       282 天前 via Android
    不用 tls 库你手搓 RSA DH ECDSA ?扯淡呢。
    vituralfuture
        2
    vituralfuture  
    OP
       282 天前 via Android
    @rrfeng 加密算法应该还是可以用库的,只要自己实现握手,协商这一系列流程,然后拿到秘钥,把 http 报文加密一下就行
    zwy100e72
        3
    zwy100e72  
       282 天前
    不要难为你自己了,考虑到这个课程设计的范围,直接用 http 服务吧
    libook
        4
    libook  
       282 天前
    课题没要求支持 HTTPS 的话,你就只做支持 HTTP 的是不是就行了。

    除非你们老师就是想让你们自己实现 TLS 协议。
    PTLin
        5
    PTLin  
       282 天前
    照着 rustls 抄一个吧,要不然 tls 的好几次握手,证书校验,密钥协商生成密钥等等,够你喝好几壶的了。
    不过按照我的经验老师可能也半懂不懂你的意思吧,没想让你自己实现整个 tls 。
    RTSmile
        6
    RTSmile  
       279 天前 via iPhone
    有一说一,我感觉你老师压根没仔细看你写的那一段话,只是单纯的看了说要用第三方库就觉得不可以。
    课设让自己实现 TLS 意义不大,不光繁琐,还没有任何的实用意义。实际生产使用的 tls 库都是要通过严格的安全审计的,课设这种就算自己设计出来了一个 tls 估计也是一堆漏洞。
    bli22ard
        7
    bli22ard  
       278 天前
    什么实力,自己实现 tls
    hanyuwei70
        8
    hanyuwei70  
       274 天前
    如果只是作业,你可以用一个带 HTTP 的服务。
    uiiytwyfsdtr
        9
    uiiytwyfsdtr  
       246 天前
    自己原生撸一遍 TLS 你也是够勇气的少年...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2214 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:38 · PVG 09:38 · LAX 17:38 · JFK 20:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.