前言:微信公众号,小程序、钉钉等开发需要内网穿透工具。
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内网穿透工具搭建,方便微信公众号,小程序、钉钉等开发【已投入使用】相关推荐

  1. .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

    前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...

  2. 微信,支付宝支付,微信公众号小程序授权等

    微信,支付宝支付,微信公众号小程序授权等 前言 微信支付 微信授权 maven依赖(更新) 前言 最近在公司也做了很多移动端项目,如今微信公众号,小程序又特别火爆,免不了要接触支付,授权这类的业务需求 ...

  3. crmeb打通版开源微信公众号小程序商城框架源码

    crmeb是什么? crmeb是一套客户管理加电商营销系统,基于ThinkPhp6.0+Vue采用前后端分离模式开发,前后台都具有非常标准的API接口,是一款非常优秀的开源微信端及小程序商城框架,能够 ...

  4. python爬虫爬取微信公众号小程序信息

    python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...

  5. 微信公众号小程序第三方获取授权流程

    概述 这是一个类似平时的C-S模型,但在这模型中有一个问题,服务器能够获取到客户端的客户唯一标识,在微信中应该就是微信号.应该是出于保护用户隐私的目的,微信选择了使用openid来代替微信号作为唯一标 ...

  6. FastTunnel - 免费好用的内网穿透工具搭建教程

    FastTunnel是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问. 与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展.易于 ...

  7. 微信公众号小程序外卖返利分销系统美团饿了么外卖cps软件源码

    饿了么美团外卖返利程序对接公众号发单机器人分销系统返利源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码 源代码地址 http://y.mybei.cn 成品展示 截图 步骤 下载以上源代码 ...

  8. 微信公众号/小程序注册认证

    本篇文章主要从注册微信小程序的角度讲如何注册小程序账号. 作为一名小程序开发者,可能您不用操心注册账号和微信认证的事情,这种事情一般可以交由客户去注册. 但当您的客户需要您自己去注册账号时,您可能需要 ...

  9. 微信公众号 小程序 开放平台是什么鬼

    三个东西,公众号,小程序,微信开放平台 公众号,小程序,微信开放平台都要申请及认证 1)公众号申请需要填写企业详情,对公小额转帐验证会退回,不要钱,审核营业资质.最后认证费用300  2)如果你要开通 ...

最新文章

  1. 线下活动丨Big Model Meetup 第1期:大模型Prompt Tuning技术,8场学术报告和Poster展示...
  2. C#统计子字符串出现次数(转帖,http://www.it130.cn/)
  3. 启明云端分享|ESP32-S3 Smartconfig一键配网
  4. Struts+Spring+Hibernate练习(完整)
  5. 【都挺好】追求一生的科技住宅原来在这!
  6. 如何利用 Android 自定义控件实现炫酷的动画?|CSDN 博文精选
  7. 登录页面怎么弄_python爬虫另辟蹊径绕过企查查的登录验证,我太冇财了
  8. 阅读《黑客与画家》有感——Hackers and Painters
  9. 实验五 存储管理实验
  10. Photoshop 2020 for Mac(PS 2020)中英双版
  11. cf服务器人最多,玩家实测CF各大区在线人数排名 你的区排第几?
  12. excel合并两列内容_比Excel公式快10倍,史上最牛合并表格工具来了!!
  13. YOLOV5:不懂代码也能使用YOLOV5跑项目
  14. Direct Show学习方法
  15. 云南鲁甸县附近发生6.5级地震 震源深度12千米
  16. #CF div2 1670D Very Suspicious题解(思维+贪心)
  17. STK10与MATLAB2014a的连接经验
  18. ADC0809检测报警c语言,51单片机ADC0809+AD590温度检测、报警程序
  19. 企业项目实战k8s篇(十三)k8s容器资源限制
  20. Linux 修改tomcat端口号

热门文章

  1. Java-除数为0时会报错的情况(一个无法理解的例外-被除数为0)
  2. CSS基础介绍(三)
  3. 第八次作业——Excel制作工资表
  4. element ui el-time-picker 时间选择其组件的坑点记录
  5. 让谷歌折戟的AI流行病预测,在今天如何被创业公司攻占?
  6. Macronix nand 驱动移植总结
  7. Linux运维入门到高级
  8. Golang Break、Continue跳出多层循环
  9. MOOC【实用Python程序设计】_026正常血压
  10. 鹤岗房价为啥这么低?哪些城市也可以5万买一套房