代理本地HTTPS的工具推荐

1,057 阅读2分钟

local-ssl-proxy

local-ssl-proxy 是一个基于 Node.js 的本地 SSL 代理工具,它可以将未加密的 HTTP 流量转换为加密的 HTTPS 流量,从而使得在本地开发和测试 HTTPS 服务更加方便。它可以在本地计算机上运行,将 HTTP 流量路由到指定的 HTTPS 目标服务器,并自动为您生成和维护 SSL 证书。

它的安装与使用非常简单。

安装:

npm install -g local-ssl-proxy

使用:

local-ssl-proxy --source 443 --target 80

上面的意思是,将本地80端口的Web服务,代理到本机的443的HTTPS端口上,当然,你也可以是9000之类的其它端口。

这样,本地https://localhost/就可以访问了。

SwitchHosts

再搭配SwitchHosts修改本地的hosts文件(如果不用,手动修改/etc/hosts),简直完美。 image.png

软件界面很简单,有个开关可以配置是否要开启。

通常情况下,如果修改完后,浏览器可能并不会立即生效,因为有DNS缓存。这时你可以用无痕模式来查看,又或者考虑清除DNS,详见这篇文章刷新DNS

mkcert

再推荐一个工具mkcert,一个制作本地可信开发证书的简单工具。它不需要配置。

什么是可信开发证书呢?

就是我们自签的HTTPS证书在浏览器中访问时会报不安全: image.png

但用这个工具后,就变成与正常的HTTPS一样的了。

安装过程详见说明文档。

创建本地local CA:

$ mkcert -install
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

生成某个域名的证书,比如test.uino.com:

$ mkcert test.uino.com

Created a new certificate valid for the following names 📜
 - "test.uino.com"

The certificate is at "./test.uino.com.pem" and the key at "./test.uino.com-key.pem" ✅

It will expire on 10 October 2025 🗓

从提示信息来看,默认是3个月后过期。

当前文件夹下就生成了2个文件: image.png

也可以指定文件名:

mkcert -key-file ca/key.pem -cert-file ca/cert.pem test.uino.com

image.png

生成的这些文件就可以拿去启动HTTPS服务了。

配合一开始我们说的local-ssl-proxy使用:

local-ssl-proxy --source 443 --target 80 -c ca/cert.pem -k ca/key.pem

去浏览器上一看,警告不安全的状态就不见了: image.png 一旦不使用这2个证书,就打回原型了。

总结

local-ssl-proxy是基于Node.js的本地SSL代理工具,可将HTTP流量转换为HTTPS,方便本地开发和测试。

搭配SwitchHosts可修改本地hosts文件。

mkcert是制作本地信任开发证书的工具,安装后可创建本地CA,生成HTTPS证书,使浏览器不再警告不安全。与local-ssl-proxy结合使用可启用HTTPS服务。