centos Let‘s Encrypt 免费https证书申请,并且自动续约

news/2024/7/12 3:27:53 标签: centos, https, linux, https证书

一、首先我们要使用certbot 工具

官网地址: https://certbot.eff.org/instructions?ws=other&os=centosrhel8

下载 snap 工具

sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
sudo systemctl status snapd
sudo systemctl start snapd

下载安装 cerbot
安装很简单

sudo snap install --classic certbot

二、装完后我们要配置证书

  1. ** 在使用 webroot 之前,先配置根目录** 我这边以 nginx 为例
     location ^~ /.well-known {
        allow all;
        root /www/xxx.top;
    }

主要是 cerbot 会访问到 .wel-known 这个目录

  1. 配置完后,我们运行命令
sudo certbot certonly --webroot -w /www/xxx.top -d xxx.top
-w 或 --webroot-path: 这是你的网站的根目录的路径,certbot 会在这个目录下创建一个名为 .well-known 的子目录(如果还没有的话),并在其中放置验证文件。这个参数后面的值应该是网站的根目录的绝对路径。

-d: 这用于指定你想要为其获取或续约证书的域名。例如,-d xxx.top 表示你想要获取或续约 xxx.top 的证书。

要注意的是,如果你为多个域名获取证书,你可以多次使用 -d 参数,例如:-d example.com -d www.example.com。如果这些域名使用相同的 webroot,那么只需一个 -w 参数。但是,如果它们有不同的 webroot,你需要为每个域名指定其对应的 webroot,如:-w /path/to/webroot1 -d example.com -w /path/to/webroot2 -d sub.example.com

  1. 证书生成后会打印证书路径
    一般在 /etc/letsencrypt/live/ 这个目录下

三、自动续约,申请的3个月就过期了

  1. 查看我们续约的域名
sudo certbot certificates
  1. 续约命令
sudo certbot renew --quiet --deploy-hook "/home/ec2-user/data/docker/services/nginx/deploy_script.sh"
这个快过期后自动续约, --quiet 参数,那么 Certbot 在默认情况下是不会在终端中输出任何信息的,除非发生错误。这是为了使 Certbot 在静默模式下运行,特别是在计划任务或自动化任务中非常有用。

如果想强制续约测试,加上 --force-renewal,这个有次数限制,建议不需要强制续约,只在调试的时候使用

sudo certbot renew --force-renewal --quiet --deploy-hook "/home/ec2-user/data/docker/services/nginx/deploy_script.sh"


  1. 完整脚本
  • 定时任务
每天去检测下
0 2 * * * /home/ec2-user/data/docker/services/nginx/renew_and_deploy.sh
  • renew_and_deploy.sh
#!/bin/bash

# 获取 Certbot 提供的续约域名

# Renew the certificate
sudo certbot renew --quiet --deploy-hook "/home/ec2-user/data/docker/services/nginx/deploy_script.sh"

echo "Script executed at $(date)" >> /home/ec2-user/data/docker/services/nginx/logfile.log


  • deploy_script.sh
#!/bin/bash

# 测试 强制续约测试 sudo certbot renew --force-renewal --quiet --deploy-hook "/home/ec2-user/data/docker/services/nginx/deploy_script.sh"
# 确认证书时间 sudo openssl x509 -in /etc/letsencrypt/live/xxx.top/fullchain.pem -text -noout | grep "After"
renewed_domains=$RENEWED_DOMAINS

# 检查是否续约了特定的域名
if [[ $renewed_domains == *"xxx.top"* ]]; then
    # 对 example.com 做特定的操作
    echo " 续约xxx.top" >> /home/ec2-user/data/docker/services/nginx/logfile.log

    # Copy the renewed certificate to the desired location
    sudo cp -f /etc/letsencrypt/live/xxx.top/fullchain.pem /home/ec2-user/data/docker/services/nginx/services/nginx/ssl/xxx.top
    sudo cp -f /etc/letsencrypt/live/xxx.top/privkey.pem /home/ec2-user/data/docker/services/nginx/services/nginx/ssl/xxx.top

    # Reload the nginx inside the docker container
    docker exec -it nginx nginx -s reload
fi



其他日志输出

  sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log

http://www.niftyadmin.cn/n/5123871.html

相关文章

操作系统进程调度算法的模拟实现(c语言版本)

前言:本文旨在分享如何使用c语言对操作系统中的部分进程调度算法进行模拟实现,以及算法描述的讲解,完整代码放在文章末尾,欢迎大家自行拷贝调用 目录 常见的调度算法 数据结构 先来先服务调度算法 算法模拟思路: …

nvidia-smi

1、说明 nvidia-smi 是 NVIDIA System Management Interface 的缩写,是 NVIDIA 提供的一个命令行工具,用于查看和管理 NVIDIA GPU 设备的信息。执行这个命令通常可以获取关于系统上安装的 NVIDIA GPU 的实时状态和性能信息。 一般来说,nvid…

【Python】基于非侵入式负荷检测与分解的电力数据挖掘

文章目录 前言一、案例背景二、分析目标三、分析过程四、数据准备4.1 数据探索4.2 缺失值处理 五、属性构造5.1 设备数据5.2 周波数据 六、模型训练七、性能度量文末送书:《Python数据挖掘:入门、进阶与实用案例分析》 前言 本案例将根据已收集到的电力…

linux安装vscode vscode使用 创建项目并运行

下载 https://code.visualstudio.com/ 下载.deb文件 安装 假如文件被下载到了 /opt目录下 进入Opt目录,右键从当前目录打开终端。 输入下面的安装命令。 sudo apt-get install ./code_1.83.1-1696982868_amd64.deb 安装成功。 安装插件 使用c,必…

EasyRecovery2024破解版数据恢复软件下载

当我们处理重要的文件数据时,遇到突然停电导致数据来不及保存,再次打开电脑后,此前处理的数据可能丢失,这无疑会影响我们的工作进度,数据恢复软件在此时就派上用场,那么下面就来具体介绍EasyRecovery软件的…

“淘宝” 开放平台接口设计思路|开放平台接口接入流程教程

最近对接的开放平台有点多,像淘宝、京东、快手、抖音等电商平台的开放平台基本对接了个遍,什么是CRUD BODY也许就是这样的吧!!! 虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白…

研发效能认证学员作品:快速进行持续集成应用实践丨IDCF

作者:赖嘉明 研发效能(DevOps)工程师认证学员 随着数字化转型的推进及市场竞争的加剧,越来越多的企业也意识到持续集成的重要性。 而持续集成作为一种先进的软件开发实践和工具链,可以帮助企业实现自动化构建、集成和…

进程间通信(匿名管道、命名管道、消息队列、共享内存、信号量、信号、Socket)

文章目录 一、什么是进程间通信二、管道1.匿名管道(pipe)a).创建匿名管道b).管道的读写规则c).匿名管道的特点 2.有名管道(FIFO)a).创建命名管道b).命名管道的特点c).基于命名管道的进程间通信(服务端/客户端) 三、消息队列四、共享内存1.什么是共享内存…