当前位置: 首页 > news >正文

centos Let‘s Encrypt 免费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 locationsudo cp -f /etc/letsencrypt/live/xxx.top/fullchain.pem /home/ec2-user/data/docker/services/nginx/services/nginx/ssl/xxx.topsudo 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 containerdocker exec -it nginx nginx -s reload
fi

其他日志输出

  sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log
http://www.lryc.cn/news/206612.html

相关文章:

  • nodejs+vue城市轨道交通线路查询系统-计算机毕业设计
  • MFC Windows 程序设计[332]之十进制转十六进制编辑框(附源码)
  • 转化率的催化剂:网站客服机器人如何推动企业销售?
  • Go 包操作之如何拉取私有的Go Module
  • VR酒店专业情景教学演示
  • odps函数
  • 【golang】mysql默认排序无法实现 使用golang实现对时间字符串字段的排序
  • C语言学习笔记总结(一)
  • WPF:自定义按钮模板
  • Spring Boot集成Swagger接口分类与各元素排序问题
  • 盘点国产ChatGPT十大模型
  • 【C++杂货铺】C++11特性总结:列表初始化 | 声明 | STL的升级
  • doris的be其中失败的原因
  • LeetCode 面试题 16.04. 井字游戏
  • Nodejs和Node-red的关系
  • Spring Boot整合OAuth2实现GitHub第三方登录
  • Android [SPI,AutoSerivce,ServiceLoader]
  • 【Linux】ASCII码表-256个
  • node.js - 上传文件至阿里云oss
  • xxl-job项目集成实战,全自动项目集成,可以直接使用到项目中
  • Qt生成PDF报告
  • Jenkins 安装全攻略:从入门到精通
  • 迎重阳,话养老:平安养老险如何助力国民“养老梦”?
  • 微信小程序获取用户信息
  • Mysql 索引原理和优化方式
  • Ubuntu安装VM TOOLS解决虚拟机无法和WINDOWS粘贴复制问题
  • 【Docker】Docker Swarm介绍与环境搭建
  • 国产CAN总线收发芯片DP1042 兼容替换TJA1042
  • [架构之路-243]:目标系统 - 纵向分层 - 架构是表面轮廓、内部骨架、未来蓝图,企业组织架构、信息系统架构、软件架构、应用程序就架构
  • 【接口技术】定时计数器习题