开篇废话
最近收了个已经 EOL 的奇妙防火墙产品用于替换我一行都不会配的雅马哈路由器,在这里记录一下其中的一部分折腾步骤。
在这之前没用过这个厂商的产品,还算是学习了一下。
这是已经 EOL 的产品的手动配置,然而新版防火墙里面已经自带 acme 了,不过实际情况是 ip 可能还拿来做别的业务需求,因此 80 443 不能被防火墙占用,因此本文依然有参考价值¿
正文
思路
既然防火墙内没有办法自动签证书,我们就得安排一台机器定时传证书上去。
自动续证书
这里是自己机器的自动续费证书部分 这里没什么好说的了,安排 acme.sh / certbot 自己搞。
这里我用了 certbot (因为 Debian 自带)
certbot certonly --webroot -d [你的域名] --register-unsafely-without-email --agree-tos -w /var/www/html/
然后 Nginx 配置参考:
server {
listen 80 default_server;
location ^~ /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
计划任务:
systemctl enable certbot.timer
其它配置步骤省略。
防火墙内开通 API 账户
在 network / administrators 里面添加一个 api 账户,ACL 如下:
这是目前能找到的最小权限,不过范围还是很大。
制作脚本上传
以下是适用于 certbot 的脚本,路径域名什么的有出入自己改:
输出 (不会有任何数据传到我服务器,可以 F12 自行验证)
大概脚本就是这样,主要是上传证书 /api/v2/monitor/vpn-certificate/local/import
,然后更换 SSL VPN 里面的证书 /api/v2/cmdb/vpn.ssl/settings
。
然后依赖为 curl 和 jq (base64 应该都自带就不说了)
就这么简单的脚本也折腾了 1 小时+
然后本脚本还少了需要删除老证书的 gc 操作,这个应该无所谓,证书才多大。
计划任务
我们测试一下:
chmod +x cert2fw.sh
./cert2fw.sh
显示两个 status success 就代表 OK 了。
然后安排计划任务,每周上传一次证书过去防火墙。
这里我是直接丢文件夹里面,懒得配了,理论上是安排 certbot 签发证书后的 hook 才对:
mv cert2fw.sh /etc/cron.weekly
总结
总之这也还算运维的基本功,写写简单脚本方便以后操作。
另外这防火墙可能之后会出一系列的折腾回顾,尽情期待。
完