ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】
前言:微信公众号,小程序、钉钉等开发需要内网穿透工具。
1、经过不断的摸索和调试,完成ngrok内网穿透的工具的搭建,对于微信公众号,小程序、钉钉等开发提供便利性。
2、搭建环境Linux centos8 备案域名 域名证书(Let’s encrypt免费证书)
3、搭建步骤
1)安装git 拉取ngrok源码
yum install -y gcc gcc-c++ git zlib-devel openssl-devel perl
2)安装go,因为ngrok是使用GO语言编写
wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.8.linux-amd64.tar.gz
3)配置环境变量
vi /etc/profile
#在最后添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
更新环境变量让配置生效
source /etc/profile
验证是否安装正确
go version
[root@localhost bin]# go version
go version go1.16.12 linux/amd64
4)下载ngrok源码 有三种方式
a、使用git直接clone (可能存在版本更新)
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
b、前辈已经处理好的ngrok 和相关的依赖 https://github.com/haungjianli/ngrok
cd /usr/local/
git clone https://github.com/haungjianli/ngrok
c、因为ngrok可能存在更新,直接把本次源码下载并且提交资源:已上传的ngrok源码下载
执行解压操作
tar -xvf ./ngrok.tar.gz
5)创建证书 注意这里是为了安装创建的证书,正式使用必须使用正式发布的签名证书
#进入ngrok目录
cd /usr/local/ngrok
#使用openssl创建证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.yxt.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.yxt.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
当前目录下有创建好的证书
6)将证书移动到 sever 和 client 执行一下命令 提示是否覆盖?按 y 覆盖
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
7)生成服务端(这里会很慢,GitHub拉取数据太慢,需要多试几次,抛出fatal: unable to access ‘https://github.com/keepeye/log4go/’: Empty reply from server错误,不用担心)
cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release-server
这里可能出现一个错误 【log4go 会提示访问不到,修改源码,将该包改为 github 上的地址】
GOOS=“” GOARCH=“” go get github.com/jteeuwen/go-bindata/go-bindata
go get: module github.com/jteeuwen/go-bindata/go-bindata: Get “https://proxy.golang.org/github.com/jteeuwen/go-bindata/go-bindata/@v/list”: dial tcp 142.251.43.17:443: i/o timeout
make: *** [Makefile:22: bin/go-bindata] Error 1
解决:
#进入到log目录
cd /usr/local/ngrok/src/ngrok/log
#修改参数值
#将原来的 log "github.com/alecthomae/log4go" 改为 log "github.com/keepeye/log4go"
vi ./logger.go
将原来的 log “github.com/alecthomae/log4go” 改为 log “github.com/keepeye/log4go”
再次执行生成服务端
cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release
可能再次出现错误:
go get ngrok/…: malformed module path “ngrok”: missing dot in first path element
make: *** [Makefile:8: deps] Error 1
解决:
#处理异常
go env -w GO111MODULE=off
再次执行生成服务端
cd /usr/local/ngrok/
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
GOOS=linux GOARCH=amd64 make release
未报错即为成功
8)生成客户端 自己按照客户端系统来选 我是windows 64位
cd /usr/local/ngrok/
#windows 64位
GOOS=windows GOARCH=amd64 make release-client
#windows 32位
GOOS=windows GOARCH=amd64 make release-client
#Mac OS 32位
GOOS=darwin GOARCH=386 make release-client
#Mac OS 64位
GOOS=darwin GOARCH=amd64 make release-client
#Linux 64位
GOOS=linux GOARCH=amd64 make release-client
#ARM 平台
GOOS=linux GOARCH=arm make release-client
9)执行完之后 /usr/local/ngrok/bin 会自动生成两个文件
a、windows_amd64 -> ngrok.exe(将其下载下来,本地PC需要其建立映射通道)
b、ngrokd (启动ngrok服务执行程序)
10)启动服务端
cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
成功输出日志
-domain 域名和证书保持一致
-httpAddr http端口
-httpsAddr https 端口
-tunnerlAddr 客户端ngrok.exe连接端口
服务器后台保持运行
cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
nohup ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &
本地PC电脑接入
将/usr/local/ngrok/bin下的windows_adm64下的 ngrok.exe 下载到PC电脑上,并创建ngrok.cfg文件和start.bat文件
配置连接信息
a、修改ngrok.cfg
server_addr: "ngrok.yxt.top:4443"
trust_host_root_certs: false
b、修改start.bat
ngrok -config ngrok.cfg -subdomain yangdouya 127.0.0.1:8080
点击start.bat开启连接 连接失败
服务器日志抛出异常 因为我们使用的是自己创建的安全证书,计算机会认为是不安全 导致连接失败
remote error: tls: bad certificate
这里要先修改ngrok的文件 默认配置文件域名和我们使用域名不一样
#修改配置文件
cd /usr/local/ngrok/ngrok/src/ngrok/client
#修改参数
vi ./model.go
解决办法 使用正式签名证书 这里我是使用免费的证书 (Let’s encrypt免费证书)
配置方法为:
a、使用Let’s encrypt生成的证书有以下的pem
cert.pem
chain.pem
fullchain.pem
privkey.pem
将这些pem证书文件上传到服务器后进行操作:
a、privkey.pem重命名为snakeoil.key,fullchain.pem的重命名为snakeoil.crt ,生成的snakeoil.crt 复制命名为 ngrokroot.crt
cp ./privkey.pem ./snakeoil.key
cp ./fullchain.pem snakeoil.crt
cp ./snakeoil.crt ./ngrokroot.crt
b、复制并且覆盖掉ngrok现有证书 提示后 按 y 确认覆盖
cp ./ngrokroot.crt /usr/local/ngrok/assets/client/tls/ngrokroot.crt
cp ./snakeoil.crt /usr/local/ngrok/assets/server/tls/snakeoil.crt
cp ./snakeoil.key /usr/local/ngrok/assets/server/tls/snakeoil.key
重新编译生成服务端和客户端
cd /usr/local/ngrok/
#编译生成服务端
GOOS=linux GOARCH=amd64 make release-server
#编译生成客户端
GOOS=windows GOARCH=amd64 make release-client
开启服务端
cd /usr/local/ngrok/bin
#执行命令 注意 开放端口 80 443 4443 域名和证书保持一致
nohup ngrokd -domain="ngrok.yxt.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &
使用ngrok客户端进行连接即可
搭建遇到很多坑,欢迎大家一起讨论
ngrok内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】相关推荐
- .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?
前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...
- 微信,支付宝支付,微信公众号小程序授权等
微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...
- crmeb打通版开源微信公众号小程序商城框架源码
crmeb是什么? crmeb是一套客户管理加电商营销系统,基于ThinkPhp6.0+Vue采用前后端分离模式开发,前后台都具有非常标准的API接口,是一款非常优秀的开源微信端及小程序商城框架,能够 ...
- python爬虫爬取微信公众号小程序信息
python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...
- 微信公众号小程序第三方获取授权流程
概述 这是一个类似平时的C-S模型,但在这模型中有一个问题,服务器能够获取到客户端的客户唯一标识,在微信中应该就是微信号.应该是出于保护用户隐私的目的,微信选择了使用openid来代替微信号作为唯一标 ...
- FastTunnel - 免费好用的内网穿透工具搭建教程
FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问. 与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展.易于 ...
- 微信公众号小程序外卖返利分销系统美团饿了么外卖cps软件源码
饿了么美团外卖返利程序对接公众号发单机器人分销系统返利源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码 源代码地址 http://y.mybei.cn 成品展示 截图 步骤 下载以上源代码 ...
- 微信公众号/小程序注册认证
本篇文章主要从注册微信小程序的角度讲如何注册小程序账号. 作为一名小程序开发者,可能您不用操心注册账号和微信认证的事情,这种事情一般可以交由客户去注册. 但当您的客户需要您自己去注册账号时,您可能需要 ...
- 微信公众号 小程序 开放平台是什么鬼
三个东西,公众号,小程序,微信开放平台 公众号,小程序,微信开放平台都要申请及认证 1)公众号申请需要填写企业详情,对公小额转帐验证会退回,不要钱,审核营业资质.最后认证费用300 2)如果你要开通 ...
最新文章
- 线下活动丨Big Model Meetup 第1期:大模型Prompt Tuning技术,8场学术报告和Poster展示...
- C#统计子字符串出现次数(转帖,http://www.it130.cn/)
- 启明云端分享|ESP32-S3 Smartconfig一键配网
- Struts+Spring+Hibernate练习(完整)
- 【都挺好】追求一生的科技住宅原来在这!
- 如何利用 Android 自定义控件实现炫酷的动画?|CSDN 博文精选
- 登录页面怎么弄_python爬虫另辟蹊径绕过企查查的登录验证,我太冇财了
- 阅读《黑客与画家》有感——Hackers and Painters
- 实验五 存储管理实验
- Photoshop 2020 for Mac(PS 2020)中英双版
- cf服务器人最多,玩家实测CF各大区在线人数排名 你的区排第几?
- excel合并两列内容_比Excel公式快10倍,史上最牛合并表格工具来了!!
- YOLOV5:不懂代码也能使用YOLOV5跑项目
- Direct Show学习方法
- 云南鲁甸县附近发生6.5级地震 震源深度12千米
- #CF div2 1670D Very Suspicious题解(思维+贪心)
- STK10与MATLAB2014a的连接经验
- ADC0809检测报警c语言,51单片机ADC0809+AD590温度检测、报警程序
- 企业项目实战k8s篇(十三)k8s容器资源限制
- Linux 修改tomcat端口号