四次元科技
科技、动漫、生活、学习以及一切

雷池WAF配置自动更新证书

建站, 科技 ·

前言

前几天公司同事说要给公司网站加一个 WAF 防火墙,就说到了这个雷池,我一听就想起来之前也看过这个雷池 WAF,既然想到了就给自己网站也加一个试试看吧。

加上来之后发现,好家伙,每天还真有好几百条攻击记录,看到记录之后感觉自己安心了好多,于是就决定这么用着了。

问题

雷池 WAF 本质上就是一个内置了规则和管理工具的 Nginx 反向代理,他要作为你网站最前置的反向代理,所以需要给他配置证书才能正常使用 SSL。

但是他内置的 SSL 证书配置,要么用他自己的证书工具(不支持泛域名,只支持 Let's Encrypt 证书),要么就需要手动上传/粘贴证书信息才能配置,就非常的不好用。

我的网站使用 1panel 面板,而 1panel 面板有着很好用的证书更新功能,于是我就想怎么让雷池跟着 1panel 的证书自动更新证书。

实现方式

首先需要在雷池 WAF 的后台里,手动添加一个证书,并且设置到需要的网站上。

然后点右边的编辑,并且打开 F12 的网络页面。随便填点数据,点提交,然后查看旁边多出来的 cert 接口的信息。其中 id 字段便是你这个证书的 ID 值。

在系统设置里面,添加一个新的 API Token,记录下来。

然后创建一个计划任务,用你的运维面板或者 crontab 之类的都行,运行下面的脚本(请注意修改对应的值)。

#/bin/sh

crt=$(sed ":tag;N;s/\n/\\\n/;b tag" 你的证书文件路径)
key=$(sed ":tag;N;s/\n/\\\n/;b tag" 你的私钥文件路径)

curl --location --request POST "https://雷池的服务地址/api/open/cert" \
--header "X-SLCE-API-TOKEN: 你的API_Token" \
--header "Content-Type: application/json" \
--data "{
    \"manual\": {
        \"crt\": \"$crt\",
        \"key\": \"$key\"
    },
    \"type\": 2,
    \"id\": 你的证书ID
}"

修改后的案例。

#/bin/sh

crt=$(sed ":tag;N;s/\n/\\\n/;b tag" /abc/123/fullchain.pem)
key=$(sed ":tag;N;s/\n/\\\n/;b tag" /abc/123/privkey.pem)

curl --location --request POST "https://example.com/api/open/cert" \
--header "X-SLCE-API-TOKEN: XYZ_ABCD1234abcd7890qwer6543zxcv" \
--header "Content-Type: application/json" \
--data "{
    \"manual\": {
        \"crt\": \"$crt\",
        \"key\": \"$key\"
    },
    \"type\": 2,
    \"id\": 1
}"

之后只要运行这个脚本,雷池就可以更换新的证书了。





评论
暂时还没有评论
添加新评论
发表回复