自建 Ngrok 内网穿透搭建,证书自动续签

自建 Ngrok 内网穿透,证书自动续签

必要前提条件

  • 公网可访问域名
  • 公网IP地址的服务器

软件环境

  • Ubuntu 18 LTS
  • NGINX
  • acme.sh
  • Go
  • 开启服务器TCP端口 4443,8080,8443

示例说明

示例域名以本站域名为例。
记得把 dapeng.me 换成自己的域名

# 井号代表在sudo用户权限下的命令窗口运行
# [包含在方括号中的内容,表明需要替换]

基础安装

$ sudo su
# cd ~
# apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y
# apt-get install build-essential golang mercurial git nginx -y

配置NGINX

# systemctl start nginx
# systemctl enable nginx
# mkdir /etc/nginx/ssl

生成网站证书

证书使用acme.sh生成,可用于ngrok服务端和客户端生成,以及网站开启HTTPS使用。
需要在root 用户根目录下操作

安装 acme.sh
# cd ~
# curl  https://get.acme.sh | sh
# alias acme.sh=~/.acme.sh/acme.sh
生成证书
# acme.sh  --issue  -d dapeng.me -d www.dapeng.me  --webroot  /var/www/html/

.me, .top 等不常见后缀域名,可尝试去除 -d www.[mydomain.com]

copy 证书到 NGINX
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/dapeng.me.key  \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd     "systemctl force-reload nginx | cp /root/.acme.sh/dapeng.me/dapeng.me.cer /root/ngrok/assets/client/tls/ngrokroot.crt"

此处 –reloadcmd命令后的双引号中可以添加其他内容。

  • 自动生成新证书的服务器添加 “| cd /root/ngrok && make release-server release-client

下载ngrok源码

源代码地址根据服务器实际情况选择
回到root用户的主目录

# cd ~

服务器在境外

# git clone https://github.com/inconshreveable/ngrok.git ngrok

服务器在境内

# git clone https://github.com/tutumcloud/ngrok.git ngrok

以上源码二选一,根据自己的实际情况

# cd ngrok
# cp /root/.acme.sh/dapeng.me/dapeng.me.cer assets/client/tls/ngrokroot.crt

编译生成ngrok服务端和客户端

为保证证书验证可用,执行如下命令生成客户端 ngrokd 文件。
文件位于 /root/ngrok/bin/

# cd /root/ngrok
# make release-server release-client

验证ngrok服务端

# ./root/ngrok/bin/ngrokd -tlsKey=/etc/nginx/ssl/dapeng.me.key -tlsCrt=/etc/nginx/ssl/fullchain.cer -domain="dapeng.me" -httpAddr=":8080" -httpsAddr=":8443"

编译Windows客户端,/root/ngrok/bin 目录下生成 windows_amd64/ 文件夹

# cd /root/ngrok
# GOOS=windows GOARCH=amd64 make release-client

编译macOS客户端,/root/ngrok/bin 目录下生成 darwin_amd64/ 文件夹

# cd /root/ngrok
# GOOS=darwin GOARCH=amd64 make release-client

配置ngrok客户端

下载上一步生成的客户端文件,并在客户端执行文件的同目录创建配置文件。
保存文件名为 ngrok.cfg

server_addr: "weixin.dapeng.me:4443"
trust_host_root_certs: false

命令行中启动输入以下命令启动客户端

Windows

ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=weixin 8080

macOS

./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=weixin 8080

undefined

收尾工作

将服务器端 ngrokd设置为系统服务

# vim /etc/systemd/system/ngrok.service

输入以下内容,记得改成自己的域名

Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124