• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下载安装 cerbot
    安装很简单

    sudo snap install --classic certbot
    
    • 1

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

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

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

    1. 配置完后,我们运行命令
    sudo certbot certonly --webroot -w /home/ec2-user/data/docker/services/nginx/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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 证书生成后会打印证书路径
      一般在 /etc/letsencrypt/live/ 这个目录下

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

    1. 查看我们续约的域名
    sudo certbot certificates
    
    • 1
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 完整脚本
    • 定时任务
    每天去检测下
    0 2 * * * /home/ec2-user/data/docker/services/nginx/renew_and_deploy.sh
    
    • 1
    • 2
    • 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
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 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
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    检测域名过期时间
    openssl x509 -in /home/ec2-user/data/docker/services/nginx/services/nginx/ssl/widgetsapi.gitxuzan.top/fullchain.pem -noout -startdate -enddate
    
    • 1

    其他日志输出

      sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log
    
    • 1
  • 相关阅读:
    前端编程应该了解的数据结构——栈、队列
    ​MATLAB差影法人体姿态检测系统
    六、SSL开源项目-Open虚拟私有网络
    程序员股权转让协议
    阿里云-源码构建容器镜像
    springboot最常用的注解们
    JavaWeb过滤器Filter(附tomcat部分源码分析)
    封装与访问控制public&private&protected
    Linux安装Apache(解压版)
    IDEA插件开发(17)---弹出窗口
  • 原文地址:https://blog.csdn.net/qq_36517296/article/details/134034104