设想的方案如下:
服务端生成一对 RSA 的公钥和私钥,在前端第一次请求的时候,将公钥返回给前端。
前端保存这个公钥,每次向服务端发起请求的时候,请求的内容体使用这个公钥加密。
并且前端在发起请求前,也生成一对 RSA 公私钥,请求内容附上公钥,这样服务端返回的内容就可以用这个公钥加密了。
(可能防篡改、防重放还有些问题,但是再加上验证的步骤应该也能实现。)
如此,不使用 https,直接在http的之上做这样一套,这样能实现 https 一样的安全程度吗?
设想的方案如下:
服务端生成一对 RSA 的公钥和私钥,在前端第一次请求的时候,将公钥返回给前端。
前端保存这个公钥,每次向服务端发起请求的时候,请求的内容体使用这个公钥加密。
并且前端在发起请求前,也生成一对 RSA 公私钥,请求内容附上公钥,这样服务端返回的内容就可以用这个公钥加密了。
(可能防篡改、防重放还有些问题,但是再加上验证的步骤应该也能实现。)
如此,不使用 https,直接在http的之上做这样一套,这样能实现 https 一样的安全程度吗?
答案是不能,一个关键的点在于,自己实现只能对请求体进行加密,并不能对整个请求进行加密。而HTTPS是对整个请求进行加密,包括请求头,而包括请求地址、请求方法在内的很多信息,是存放在请求头里的。另外,HTTPS实现是在与HTTP在同一层的,也就是说,服务器可以识别TCP连接并配对密钥进行解密,而自己实现过程中,服务器无法识别客户端正在使用的公钥是哪个,所以还必须携带能够识别公钥的ID在请求头里。
1.可以自己利用http实现rsa,只不过门槛高,难度大。
2.从题主你这句话【在前端第一次请求的时候,将公钥返回给前端】来看,我觉得你的信息安全还没过关。因此,对于你来说,我觉得你无法实现自己利用http来实现rsa。
1 回答1.6k 阅读✓ 已解决
1 回答2.9k 阅读
1 回答1.1k 阅读
983 阅读
HTTP===不安全
不要试图要去自己实现或模拟HTTPS。那是本质上的区别。