Loading... 已经2023年了,SSL证书对于网站是标配,而免费申请续期的申请方式受大家喜爱。近日,遇到了些许问题,记录如下。 业务是做物联网平台和模组的,从软件、硬件、APP都是公司定制开发。今年以来,国家陆续出台了关于APP备案要求,而该要求需要进行域名备案,且调用API的时候需要使用这些域名,且配置SSL证书。按照惯例,需要为用户申请papi、newapi、appstatic等一些列域名,这三个二级域名需要SSL证书。 按照经验,申请SSL证书只需要如下几个步骤: 1. 用户拥有域名a.cn 2. 将papi、newapi、appstatic三个域名分别以CNAME的形式指向已有域名(假设b.cn)。 3. 增加_acme-challenge二级域名也以CNAME的形式指向(_acme-challenge.b.cn)。 4. 登录hk服务器,使用acme.sh脚本进行申请。 ``` docker run --rm -it -v "$(pwd)/out":/acme.sh --net=host -e Ali_Key="xxx" -e Ali_Secret="xxx" neilpang/acme.sh:latest --issue -d a.cn --challenge-alias b.cn --dns dns_ali --server https://acme-v02.api.letsencrypt.org/directory --ecc --dnssleep 20 ``` 本来以为很简单的例行工作,实际上上面的第4步会报错。 <div class="hideContent">该部分仅登录用户可见</div> `Invalid status, a.cn: Verify error detail:No TXT record found at_acme-challenge.a.cn` 从11月6日至7日,试验了多次,依旧是这个报错。但是使用同样的方法用于别的域名确是可以的。 既然不行,那就先用别的方法进行。 上面采用的是acme协议中的dns验证方式,且是challenge-alias的形式,那么我们可以尝试使用http的方式(三个二级域名已经进行了解析)。 进行这个配置业务难,而且还使用了bt面板进行图形化部署。 首先我们在国内API服务器里面,配置虚拟主机,并在server字段增加如下内容,用于acme http模式验证 ``` location /.well-known { proxy_pass http://$hk_vm_ip_address; proxy_set_header Host $host; } ``` 然后,我们在hk云主机的bt面板里面,增加1个网站,配置域名appstatic.a.cn papi.a.cn newapi.a.cn。然后切换到SSL配置页面->Letsencrypt页面,选中要为三个域名申请1张证书,点击申请。 <div class="hideContent">该部分仅登录用户可见</div> 等待一会儿后,就拿到了证书。 在bt面板网站管理页面,通过查看配置,可以看到申请到的证书的具体路径。登录国内Nginx服务器,将申请好的远端证书下载过来,然后就完成了。 ``` nginx -t nginx -s reload ``` [1]: https://www.sddts.cn/usr/uploads/2023/11/3459058858.png [2]: https://www.sddts.cn/usr/uploads/2023/11/1533023057.png [3]: https://www.sddts.cn/usr/uploads/2023/11/3533416232.png 最后修改:2023 年 11 月 07 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏