ngrok内外网穿透--使用阿里云免费ssl证书
情景:原先已有ngrok进行内外网映射,能正常使用http与https(具体可参考 ④这篇文章)
需求:要在微信打开已有项目链接,需要使用合法的https(自签名证书实践证明无效)
解决步骤:
①根据这篇文章签发阿里云证书后,尝试对ngrok进行更改配置并重启。由于一开始对ngrok仅限于简单的部署与使用,根据网上搜索的添加-tlsKey与-tlsCrt参数指定证书后,尝试重启ngrok的服务端与客户端,发现有各种报错。同时在域名检测网站发现证书并没有被替换,使用的还是之前的自签名证书
②在多次搜索阅读相关文档之后,发现ngrok的客户端是自带证书的(也就是编译好内嵌在里面一样),因此尝试重新构建ngrok。构建ngrok使用到github的一些项目因此很缓慢,后面根据 这篇文章在gitee拉取相关项目后重构
③在构建以后发现,假设阿里云签发证书的域名是aaa.ngrok.com,那么当你映射一个内部https链接的时候必然需要加上后缀,也就是test.aaa.ngrok.com,这样又会在域名检测网站出现以下问题
④在网上搜索文章没有很大收获,我决定自己挨个尝试
前提:
证书域名:aaa.ngrok.com
ngrok服务端启动命令中 -domain="aaa.ngrok.com"
在ngrok服务端的启动命令中,根据以上条件去启动则会出现上一步的错误。因此我尝试把-domain更改为:ngrok.com 同时在客户端的配置文件中把server_addr更改为:ngrok.com(原先也是a
aa.ngrok.com),但是会发现服务端能接收到信息但是无法进行ngrok映射,处于reconnecting状态
在抱着尝试的心态,我尝试直接把客户端的server_addr改回原先的aaa.ngrok.com,重新启动ngrok的客户端,发现可以成功映射,并且外网网址也和我申请的阿里云证书上保持一致

⑤我再去域名检测网站查询我的网址,也变成了可信状态

根据以上情况,我目前对ngrok的有以下几点总结:
(1) 当我们的ngrok需要替换域名的时候,我们需要重新构建ngrok(因为ngrok的客户端内嵌有证书,如果不重新构建就会沿用以前的证书)
(2)在使用阿里云免费SSL证书的时候,我们选择其他证书,下载以后有.pem和.key文件。
pem文件替换掉ngrok自带的assets/server/tls/snakeoil.crt与assets/client/tls/ngrokroot.crt
key文件则替换掉ngrok自带的assets/server/tls/snakeoil.key
然后对ngro进行重新构建即可
(3)ngrok服务端启动命令中的-domain只是作为映射地址的一个可自定义字段(需要DNS能够解析,可以自行在阿里云添加),而ngrok服务端中的server_addr属性值则需要与申请证书的域名保持一致才能搭建起链接
更多推荐




所有评论(0)