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),简直完美。
软件界面很简单,有个开关可以配置是否要开启。
通常情况下,如果修改完后,浏览器可能并不会立即生效,因为有DNS缓存。这时你可以用无痕模式来查看,又或者考虑清除DNS,详见这篇文章刷新DNS。
mkcert
再推荐一个工具mkcert,一个制作本地可信开发证书的简单工具。它不需要配置。
什么是可信开发证书呢?
就是我们自签的HTTPS证书在浏览器中访问时会报不安全:
但用这个工具后,就变成与正常的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个文件:
也可以指定文件名:
mkcert -key-file ca/key.pem -cert-file ca/cert.pem test.uino.com
生成的这些文件就可以拿去启动HTTPS服务了。
配合一开始我们说的local-ssl-proxy使用:
local-ssl-proxy --source 443 --target 80 -c ca/cert.pem -k ca/key.pem
去浏览器上一看,警告不安全的状态就不见了:
一旦不使用这2个证书,就打回原型了。
总结
local-ssl-proxy是基于Node.js的本地SSL代理工具,可将HTTP流量转换为HTTPS,方便本地开发和测试。
搭配SwitchHosts可修改本地hosts文件。
mkcert是制作本地信任开发证书的工具,安装后可创建本地CA,生成HTTPS证书,使浏览器不再警告不安全。与local-ssl-proxy结合使用可启用HTTPS服务。