Administrator
发布于 2024-07-22 / 63 阅读
0
0

阿里云使用Certbot申请免费ssl证书以及自动续期

前言

2023年11月14号起,阿里云免费ssl证书从12个月调整为3个月。为避免之后隔一段时间就要更新一次证书的麻烦,特此寻得此自动申请及续期ssl证书方法。 借鉴自阿里云服务器 使用Certbot申请免费 HTTPS 证书及自动续期_certbot自动续期-CSDN博客

屏幕截图 2024-05-18 182146.png

安装软件

#安装epel源以及Certbot工具
root@centos7:~#yum install epel-release -y
root@centos7:~#yum install certbot -y

root@Ubuntu2004:~#apt update && apt install certbot -y

生成证书

域名分为主域名和泛域名;例如百度主域名为: baidu.com ; 百度其他的二级域名的泛域名为: *.baidu.com 执行以下命令生成证书:

# 泛域名:
root@centos7:~#certbot certonly -d *.使用自己的域名替换.com --manual --preferred-challenges dns
​
# 主域名:
root@centos7:~#certbot certonly -d 使用自己的域名替换.com --manual --preferred-challenges dns
​
root@Ubuntu2004:~#certbot certonly -d 使用自己的域名替换.com --manual --preferred-challenges dns

提示输入邮箱,用来做想过通知,尽量使用自己的邮箱就行,不建议乱输入

屏幕截图 2024-05-18 184551.png

一直点 y 同意使用协议,同意邮箱接收信息,然后会提示需要 配置 DNS TXT 解析记录

屏幕截图 2024-05-18 184905.png

进入阿里云控制中心 ——》 找到域名解析设置 ——》 添加新纪录 :

记录类型选择 TXT-文本

主机记录填入控制台提供的二级域名: _acme-challenge

解析请求来源选择默认

记录值填入上面控制台打印出来的记录值: v4fa*********8AoIeM(使用自己控制台的值,不要复制文档,文档仅供参考) 然后 保存,等待生效即可

屏幕截图 2024-05-18 190111.png

配置好之后,按回车继续 等待结果相应:

屏幕截图 2024-05-18 191301.png

此时,证书就已经生成成功了,但是只有三个月有效期

至此就可以把证书部署到自己的服务中了。

手动续期

需要自己记录证书到期的时间,在证书到期之前(到期前30天才可以正常续期),从新生成一个新的证书。

root@centos7:~#certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns

生成之后,还需根据以上配置DNS解析记录方式重新配置解析值。

自动续期

certbot 提供了一个 hook,可以编写一个 Shell 脚本,在需要续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录,达到自动续期的效果。

以下仅限基于阿里云服务器,其它服务器商自行查找对应方法!!!

配置aliyun cli

如何在Linux平台使用安装包安装阿里云CLI_阿里云CLI(CLI)-阿里云帮助中心 (aliyun.com)

root@centos7:~#wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
root@centos7:~#tar xf aliyun-cli-linux-latest-amd64.tgz
root@centos7:~#cp aliyun /usr/local/bin
root@centos7:~#rm aliyun

进行以下操作前,需提前准备一个拥有操作DNS解析配置的RAM用户,此处略!!!

将拥有 DNS 权限的角色配置到云服务器中

root@centos7:~#aliyun configure --profile akProfile

配置会进入交互式内容,如下输入完成配置:

Configuring profile 'akProfile' in '' authenticate mode...
Access Key Id []: 在这里输入刚新建角色的 Access Key 然后回车进入下一项
Access Key Secret []: 在这里输入刚新建角色的 Access Key Secret 然后回车进入下一项
Default Region Id []: cn-hangzhou 
Default Output Format [json]: json (Only support json))
Default Language [zh|en] en:
Saving profile[akProfile] ...Done.

出现如下界面,配置完成:

屏幕截图 2024-05-18 194523.png

安装 certbot-dns-aliyun 插件

项目地址:GitHub - justjavac/certbot-dns-aliyun: 阿里云 DNS 的 certbot 插件,用来解决阿里云 DNS 不能自动为通配符证书续期的问题

root@centos7:~#wget https://raw.githubusercontent.com/justjavac/certbot-dns-aliyun/main/alidns.sh
root@centos7:~#cp alidns.sh /usr/local/bin
root@centos7:~#chmod +x /usr/local/bin/alidns.sh
root@centos7:~#ln -s /usr/local/bin/alidns.sh /usr/local/bin/alidns
root@centos7:~#rm alidns.sh

测试是否能正确申请:

root@centos7:~#certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run

正式申请时去掉 --dry-run 参数:

root@centos7:~#certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"

证书续期

root@centos7:~#certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run

如果以上命令没有错误,把 --dry-run 参数去掉。

自动续期

添加定时任务 crontab。

root@centos7:~#crontab -e
1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"

上面脚本中的 --deploy-hook "nginx -s reload" 表示在续期成功后自动重启 nginx。


评论