做过微信开发的应该都知道Ngrok内网穿透工具,大多都是在使用别人提供的服务,这样并不是很安全,所以我们还是需要搭建自己的Ngrok服务。
准备工作
- 准备一个域名,此处以domain.com为例
- 一个有公网IP的服务器
我自己的服务器是 Ubuntu 16.04
先安装go编译器(ngrok是go语言编写的)
apt install golang
下载ngrok源码
git clone
如果提示没有git命令,请安装git命令,最后生成客户端会用到git
apt install git
进入ngrok根目录,执行以下命令生成签名证书
- NGROK_DOMAIN="domain.com"
- openssl genrsa -out base.key 2048
- openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
- openssl genrsa -out server.key 2048
- openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
- openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
拷贝签名证书
- cp base.pem assets/client/tls/ngrokroot.crt
- cp server.crt assets/server/tls/snakeoil.crt
- cp server.key assets/server/tls/snakeoil.key
编译ngrok
make release-server
启动ngrok服务
./bin/ngrokd -domain="domian.com" -httpAddr=":80" -httpsAddr=":443"
启动过后,在浏览器访问domain.com,如果出现如下提示,就证明一切已经配置完成
Tunnel domain.com not found
最后需要生成跟你本地相符合的客户端了,依旧在ngrok根目录使用命令
windows 64位
GOOS=windows GOARCH=amd64 make release-client
MAC OS (32位系统把amd64改成386)
GOOS=darwin GOARCH=amd64 make release-client
Linux
GOOS=linux GOARCH=amd64 make release-client
编译过后的客户端在ngrok目录下的bin目录下,下载需要的客户端到本地,然后在同目录下创建ngrok.cfg配置文件,内容如下:
- server_addr: "domain.com:4443"
- trust_host_root_certs: false
命令行启动客户端
ngrok -config=ngrok.cfg -subdomain wx 8080