Skip to content

下载安装

github 搜索 ngrok star 最多的项目,clone 到本地,解压。

证书配置

证书配置,没有证书的使用自签名证书。有证书的跳过这一步

自签名证书

使用openssl 生成证书,openssl安装 查看opnessl 学习笔记

    // 生成自签名证书私钥 ca.key
    openssl genrsa -out ca.key 2048
    // 根据 ca.key 生成自签名的CA证书
    openssl req -x509 -new  -nodes -key ca.key -subj "/CN=domain.name" -days 5000 -out root.crt 
    // 生成服务器私钥
    openssl genrsa -out server.key 2048
    // 生成服务器 csr
    openssl req -new -key server.key -subj "/CN=domain.name" -out server.csr
    // ca 颁发证书
    openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out  server.crt -days 5000

替换官方证书

将官方证书替换掉, 官方的证书放在 assets/中, 具体替换下面3个

  • 替换ca ---------- assets/client/tls
  • 替换服务器公钥 ----------- assets/server/tls
  • 替换服务器证书 ------------ assets/server/tls

重新编译服务端和客户端

编译需要安装go语言环境yum insatll golang
设置不同系统环境变量编译

GOOS=[windows | linux] GOARCH=[386 | amd64] make [release-server | release-client]

启动服务器端

    /usr/local/ngrok/bin/ngrokd [-tlsKey=/usr/local/ngrok/assets/server/tls/snakeoil.key] [-tlsCrt=/usr/local/ngrok/assets/server/tls/snakeoil.crt]  -domain=xxx.xxxx.xx -httpAddr=:81 -httpsAddr=:4443 -tunnelAddr=:4445
    
    // -tlsKey 和 -tlsCrt可选,表示使用自己的证书和 key,-damain 绑定的域名; http 和https 监听的端口; -tunnelAddr 客户端通信端口

启动客户端

根据平台下载对应的 ngrok程序 新建配置文件,添加如下内容

    server_addr: "xxx.xxxx.xxx:port"  // port 为服务器 -tunnelAddr 端口值  
    trust_host_root_certs: false   // 如果是自签名证书,此项为false

新建log文件,前期调试用 log.log
启动客户端,具体配置可以通过 ngrok -h 查看

    ngrok -config config.cfg -log log.log -subdomain subdomainname port
    // ngrok -config config.cfg -log log.log -subdomain ngrok 80