如何在本地配置https用来调试第三方平台回调

日常开发很多项目会对接第三方平台,因为配置回调地址只能是线上已备案的域名,即使在测试环境也只能以打日志的形式去调试,感觉特别不方便,就想起来通过改host的方式做一个本地域名映射,但是现在第三方平台只支持https,仅仅想通过改host的方式就达不到我们想要的了,还是要通过nginx做下代理。

首先我们需要一套ssl证书(我这里默认hosts已经做好了域名映射),那么线上这个在线生成测试证书工具就可以榜上我们了,

https://myssl.com/create_test_cert.html

注意:生成证书填写的域名一定要跟本地nginx服务器对应的网站域名一致,包括第三方平台配置的回调地址域名也要一致。

点击生成,即可获得用于https加密的证书:

把 证书 全部内容 保存到 命名为 xxx.pem 的文件下,私钥 全部内容 保存到 xxx.key 文件中存储在本地文件夹中待后续使用。

接着,到本地nginx服务器上对应的网站配置文件中,加入 https网站的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {        
listen 443 ssl;
server_name 您的域名;
ssl_certificate 您的公钥绝对地址;
ssl_certificate_key index私钥绝对地址;
ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location ^~/ {
proxy_pass http://127.0.0.1:9000; # 转发到你的本地后端端口上即可
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

注意,即时启动成功了,用谷歌内核的浏览器去访问这个 https网站,也是会被拦截,提示说这个证书无效的,但是无所谓,在其他的https地址的网站中再请求你这个网站地址就可以正常请求了,不会再拦截你的http请求了

如果虽然浏览器提示https无效,但是我们扫码登录第三方平台,第三方平台依然会把code成功给我们携带回来,这样调试起来是不是就方便多了