域名证书过期续期一直是个麻烦事,尤其是具有多个域名的情况下,且freessl
上免费泛域名只提供三个月有效期,到期就要重新申请,比较繁琐。freessl
提供了acme
自动化续期功能,是完全免费的,可以配合acme.sh
实现域名自动管理续期,且支持域名通配符,当域名到期后,可以自动完成域名续期并执行nginx
加载操作使新域名生效,就不在需要特意关注域名过期时间,省了重新手动申请的麻烦。
安装acme.sh
首先在服务器上安装acme.sh
,这个脚本会自动在域名过期后进行续期。
sudo apt install socat
curl https://get.acme.sh | sh -s email=<email> # <email> 替换为你的邮箱地址
安装完成后acme.sh
命令会写入到.bashrc
里,若提示没有acme.sh
,source
一下.bashrc
即可:
source .bashrc
申请域名证书
在freessl
网站上创建新的SSL
证书,品牌选择亚洲诚信续期,域名填写example.com
与*.example.com
(example.com
替换为实际的域名),如下:
点击创建按钮,或者直接在[ACME]
自动化菜单中点击[添加]
按钮,会弹出ACME
域名配置弹窗,输入域名后,根据提示配置acme
解析,如下:
在域名解析中添加一条CNAME
记录即可,添加完成后等待一会点击[配置完成,立即检测]
,检测成功后,会提示进行下一步部署,复制提示中的部署命令,点击部署完成即可。
服务器配置证书
首先在服务器上运行上步复制的部署命令,如下:
acme.sh --issue -d labrador.ink -d *.labrador.ink --dns dns_dp --server <server>
然后配置证书,以nginx
为例,将证书保存到nginx
路径下(example.com
替换为实际的域名):
acme.sh --install-cert -d example.com \
> --key-file /etc/nginx/ssl/example.key \
> --fullchain-file /etc/nginx/ssl/example.pem \
> --reloadcmd "service nginx force-reload"
执行成功后,acme.sh
会在域名到期后自动续期更新,并执行reload
操作生效,然后在ngxin
配置文件中直接配置即可:
listen 443 ssl;
listen [::]:443;
server_name example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/example.pem;
ssl_certificate_key /etc/nginx/ssl/example.key;
由于申请的是通配域名,所以可以直接配置多个二级域名,无需其它额外操作,如:
listen 443 ssl;
listen [::]:443;
server_name test.example.com;
ssl on;
ssl_certificate /etc/nginx/ssl/example.pem;
ssl_certificate_key /etc/nginx/ssl/example.key;