计网课程设计的一个要求是只能使用 socket ,即 TCP 以上需要自己实现,目前已经实现了一个类似 python 的 requests 的 HTTP 请求库,但我发现在访问我的博客时,因为开启了 HSTS ,自动 301 到 HTTPS ,导致无法访问
在网上搜索了一番,这方面的情况reddit 这篇帖子 总结的很好。不过我并没有找到那种能由我自己控制握手,协商等整个 HTTPS 流程的,基本上是提供加密后的 socket (暂时称呼它为 securit socket),如tokio-rustls,openssl 提供的一个例子我觉得比较接近答案了,但仍然有不符合课设要求的嫌疑
总的来说,需求如下
当然我也有点觉得课程的要求有点无理了,所以我会花有限的时间摸索一下
1
rrfeng 288 天前 via Android
不用 tls 库你手搓 RSA DH ECDSA ?扯淡呢。
|
2
vituralfuture OP @rrfeng 加密算法应该还是可以用库的,只要自己实现握手,协商这一系列流程,然后拿到秘钥,把 http 报文加密一下就行
|
3
zwy100e72 288 天前
不要难为你自己了,考虑到这个课程设计的范围,直接用 http 服务吧
|
4
libook 288 天前
课题没要求支持 HTTPS 的话,你就只做支持 HTTP 的是不是就行了。
除非你们老师就是想让你们自己实现 TLS 协议。 |
5
PTLin 287 天前
照着 rustls 抄一个吧,要不然 tls 的好几次握手,证书校验,密钥协商生成密钥等等,够你喝好几壶的了。
不过按照我的经验老师可能也半懂不懂你的意思吧,没想让你自己实现整个 tls 。 |
6
RTSmile 285 天前 via iPhone
有一说一,我感觉你老师压根没仔细看你写的那一段话,只是单纯的看了说要用第三方库就觉得不可以。
课设让自己实现 TLS 意义不大,不光繁琐,还没有任何的实用意义。实际生产使用的 tls 库都是要通过严格的安全审计的,课设这种就算自己设计出来了一个 tls 估计也是一堆漏洞。 |
7
bli22ard 284 天前
什么实力,自己实现 tls
|
8
hanyuwei70 280 天前
如果只是作业,你可以用一个带 HTTP 的服务。
|
9
uiiytwyfsdtr 252 天前
自己原生撸一遍 TLS 你也是够勇气的少年...
|