当前位置:首页 > Linux > 正文内容

CentOS系统-Linux上使用 Certbot工具申请和续签Let's Encrypt证书

Yusoon2个月前 (04-07)Linux59

一、安装Certbot

1. 在Linux系统上安装Certbot

sudo yum install certbot

二、申请Let’s Encrypt证书

1. 使用Web服务器插件申请证书

Certbot提供了多种插件,用于与不同的Web服务器集成。以下是一些常见的Web服务器插件:

sudo certbot --nginx certonly

运行命令后,Certbot会自动检测你的Nginx配置文件,并提示你选择要保护的域名。完成域名验证后,Certbot会自动更新Nginx配置文件,添加SSL证书和相关配置。

2. 手动申请证书

如果你不想使用插件,也可以手动申请证书:

sudo certbot certonly

运行命令后,Certbot会提示你输入一系列信息,包括域名、邮箱等。完成输入后,Certbot会通过ACME协议与Let’s Encrypt服务器通信,完成域名验证。

域名验证方式:

HTTP验证:Certbot会在你的Web服务器上创建一个临时文件,Let’s Encrypt服务器会访问该文件以验证域名所有权。
DNS验证:你可以在DNS记录中添加特定的TXT记录,Let’s Encrypt服务器会检查该记录以验证域名所有权。

三、配置自动续签

Let’s Encrypt证书的有效期为90天,因此需要配置自动续签功能,以确保证书始终有效。

1. 测试自动续签

在配置自动续签之前,可以先手动测试续签功能:

sudo certbot renew --dry-run

如果测试成功,表示你的系统已经具备自动续签的能力。

2. 设置定时任务

为了实现自动续签,需要在系统中设置定时任务(Cron Job)。
在CentOS系统上设置Cron Job:

# 打开Cron配置文件:
sudo crontab -e
# 添加以下内容:
0 2 * * * /usr/bin/certbot renew --quiet
# 这表示每天凌晨2点运行certbot renew --quiet命令

Cron Job的语法格式为:

* * * * * command_to_be_executed
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天为0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

要将 certbot 的自动续签任务从每天运行一次修改为每90天运行一次,可以通过以下方法实现。由于 cron 本身不支持直接设置“每90天”这样的周期,我们需要借助一些额外的逻辑来实现。
以下是实现每90天运行一次 certbot renew 的方法:

1. 创建一个脚本

创建一个脚本文件,例如 certbot_renew.sh,并写入以下内容:

#!/bin/bash

# 设置任务的最后运行时间文件
LAST_RUN_FILE="/var/log/certbot_last_run.txt"

# 获取当前日期
CURRENT_DATE=$(date +%s)

# 如果文件不存在,初始化为当前日期
if [ ! -f "$LAST_RUN_FILE" ]; then
    echo "$CURRENT_DATE" > "$LAST_RUN_FILE"
fi

# 获取上次运行的日期(以秒为单位)
LAST_RUN_DATE=$(cat "$LAST_RUN_FILE")

# 计算两个日期之间的天数差(单位:秒)
DATE_DIFF=$((CURRENT_DATE - LAST_RUN_DATE))

# 如果天数差大于或等于90天,则执行任务并更新日期
if [ "$DATE_DIFF" -ge $((90 * 86400)) ]; then
    # 执行 Certbot 续签任务
    /usr/bin/certbot renew --quiet

    # 更新最后运行日期
    echo "$CURRENT_DATE" > "$LAST_RUN_FILE"
fi

2. 设置脚本的可执行权限

chmod +x certbot_renew.sh

3. 添加到 cron

将该脚本添加到 cron 中,使其每天运行一次。编辑 cron 任务:

crontab -e

添加以下内容:

0 2 * * * /path/to/certbot_renew.sh
  • 这表示每天凌晨2点运行该脚本。
  • 脚本会检查上次运行的时间,如果距离上次运行时间超过90天,则执行 certbot renew 命令并更新时间。

四、验证证书状态

1. 检查证书状态

你可以使用以下命令检查证书的状态:

sudo certbot certificates

该命令会列出所有已安装的证书及其状态,包括有效期、是否已自动续签等信息。

2. 检查Web服务器配置

在证书更新后,确保Web服务器正确加载了新的证书。可以通过访问你的网站并查看浏览器的安全提示来验证证书是否有效。

五、注意事项

域名验证:在申请证书时,确保你的域名已经正确解析到你的服务器。如果域名解析有问题,Let’s Encrypt无法完成验证。
防火墙设置:确保你的服务器防火墙允许Let’s Encrypt服务器访问你的域名用于验证(通常是80端口或443端口)。
备份配置文件:在操作过程中,建议备份你的Web服务器配置文件,以便在出现问题时可以快速恢复。

扫描二维码推送至手机访问。

版权声明:本文由Yusoon - ZBlog发布,如需转载请注明出处。

本文链接:https://blog.bee1001.com/?id=37

分享给朋友:
返回列表

上一篇:CentOS上安装FirewallD

没有最新的文章了...

“CentOS系统-Linux上使用 Certbot工具申请和续签Let's Encrypt证书” 的相关文章

Linux安装SVN服务,并创建SVN项目

Linux安装SVN服务,并创建SVN项目

1. 安装yum install subversion 2. 创建项目svnadmin create /server/svnrepos/chegrain 3. 修改配置 1) svnserve.confvim /server/svnrepos/chegrain/conf/svnserve.con...

Linux上使用LNMP一键安装nginx

Linux上使用LNMP一键安装nginx

LNMP官网 安装LNMP稳定版nginxwget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 &&...

Linux上使用service命令启动nginx

Linux上使用service命令启动nginx

一、nginx.service文件检查是否存在/usr/lib/systemd/system/nginx.service文件,不存在时创建 二、修改内容[Unit] Description=nginx After=network.target [Service] Type=...

journalctl命令的用法

journalctl -n 3 ##日志的最新3条 --since "2020-05-01 11:00:00" ##显示11:00后的日志 --until "20...

介绍几个 Linux 命令

df -h 查看整个磁盘的空间使用情况 du -sh /* 查询某个路径下的数据大小 docker system prune -a 清理 docker 容器 find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr 查...

Linux中vim中进行替换/批量替换

˂a name="一:在 Vim 中进行文本替换的操作是通过使用 :s(substitute)命令来实现的。这里是一些基本的替换命令" class="reference-link" href="#"˃一:在 Vim 中进行文本替换的操作是通过使用 :s(substitute)命令来实现的。这里是一些...