如何本地化 https 请求

在安装一些代码库(这里是 react-nativepod install )的时候,有些国外服务器下载速度超慢:

(https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.72.4/react-native-artifacts-0.72.4-hermes-ios-debug.tar.gz)

我就先通过其它云服务器下载到,再从这个服务器下载,快很多 (VPN or CDN ?? )

但不知怎么让 react-native 直接从本地获取该文件,所以我就直接把文件放到对应的URL地址:修改 /etc/hosts 把那个服务器域名改成本地IP,再让对应的URL指向那个文件:
image

难题:
因为对应的URL是 HTTPS 而不是 HTTP,所以下载会直接报错的,
请问有什么办法吗?


1 个赞

这个问题无解吧,如果改 host 就能重定向的话,岂不是随便中间人攻击?我在这方面的做法都是用代理来解决 env https_proxy=http://ip:port command(前提是有一个可用的梯子)

1 个赞

如果是 HTTP 而不是 HTTPS 是可以的(我试过)

一般人是不能修改你的host的啊,通常也要 sudo

hosts把域名指向127.0.0.1后在本地安装的nginx配置好对应域名的ssl证书,然后配置nginx的443端口转发到你本地服务器端口就可以在本地用https了,为何用nginx,因为在nginx之外的web服务器(apache)我https没配置成功,而nginx也确实好用,所以就一直用nginx转了

关键是这个怎么弄?在服务器我是通过 certbot,在是在本地好像是不可行?

我这可以,配置方法和你截图里的一样,也curl看了下 curl

自签通不过证书验证吧,最简单的办法还是设置代理

阿里云的,一年换一次

题主应该是想架个服务器伪造成 repo1.maven.org

把下载好的内容放到 $HOME/.m2 下面就可以了。

劫持 DNS 的方法有很多,最出名的有 GFW。要想伪造 https ,就必须动客户端,比如曾经的 CNNIC 被各大浏览器吊销就是因为滥发根证书帮助监视用户

请教一个疑惑的问题,浏览器检验http证书这个过程需要连网吗?如前面所言,我改hosts把域名指向127.0.0.1,然后本地nginx配置好ssl证书(DigiCert生成的)443端口转发,可以在本机使用https了。然后我把电脑的网断了,然后这个https请求在我本地浏览器上仍可用(如图),这样看浏览器检验ssl证书这个过程并未联网

浏览器向服务端发请求,获取到 CA信息以及数字证书,之后验证证书是否有效、CA与证书是否匹配,最后验证 CA 是否可信。可信任的 CA 都内置在系统中,所以如果是本地的服务器,并不需要联网验证。

我所知道的就是如Fiddler 之类的爬虫工具,可以伪造服务器,HTTPS 的数据也可以直接爬过来(我觉得很厉害),我前面提到过爬航空数据的时候发现的

Fiddler 用的自签名证书, 为了区分特地叫 DO_NOT_TRUST_FiddlerRoot. 只要操作系统信任了 DO_NOT_TRUST_FiddlerRoot, 就会信任由它签发的所有证书. Fiddler 成为中间人, 自然可以解密 https.

可以去本地 Cert Store 看一下, 会发现由 DO_NOT_TRUST_FiddlerRoot 签发的各个域名的证书.

1 个赞

不需要联网. 只要浏览器或者操作系统信任了根证书, 就会信任由根证书签发的所有证书. 不需要和 Cert Provider 有交互.

突然想到一个问题,dns会被劫持,https可以伪造,那ip地址可以伪造吗,我觉得应该是不可以,https用于判断网站是否可信(没有被劫持),但对于无域名,直接使用ip地址的网站 是不是就没必要用https了,因为伪造不了

那可太好伪造了。你再仔细想想,没有 https(假设里面没有额外的加密),中间人是不是无所不能。

ip地址也是可以伪造的,但自己水平和见识有限想不出来可以用什么方法可以实现,问chatGPT回答我:

在常规的互联网环境中,无法直接伪造自己的 IP 地址。IP 地址是由互联网服务提供商(ISP)分配给您的,并由路由器或网络设备进行管理。这些 IP 地址是唯一且标识您在互联网上的位置。

在一些特定的情境下,如使用代理服务器或虚拟专用网络(VPN),您可以通过更改出口节点来改变显示给外部的 IP 地址。但请注意,这并不是真正的伪造 IP 地址,而是通过重定向网络流量来改变对外部的可见性。
……

伪造的是你访问站点的 IP 地址啊,比如你访问 http://223.5.5.5,中间人劫持到这个包然后不发给 223.5.5.5,而是直接返回一个包给你说,我就是 223.5.5.5,你去哪验证这个包是真的还是假的