在CentOS7上安装Certbot有三种方式:

  1. 使用 Certbot 官方提供的对应平台的RPM包安装
  2. 使用 Certbot 官方的提供的certbot-auto安装
  3. 使用 pip 安装 Certbot,因为 Certbot 是 Python 程序

安装

安装 certbot

  1. 获取安装脚本

    # curl -o /usr/local/bin/certbot-auto https://dl.eff.org/certbot-auto
    
  2. 给脚本赋权

    # chmod a+x /usr/local/bin/certbot-auto
    

安装 certbot hook 脚本

github仓库

在使用 certbot 时自动给 letencrypt 通配符证书自动续期(renew),提供了阿里云、腾讯云、华为云、GoDaddy等服务商的API接口接入。

  1. 下载

    # git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
    # cd certbot-letencrypt-wildcardcertificates-alydns-au
    # chmod 0777 au.sh
    
  2. 配置

  3. 申请证书

    • 测试:

      # certbot-auto certonly  -d *.example.com --manual --preferred-challenges dns --dry-run  --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"
      
    • 申请

      确认无误后,实际运行(去除 --dry-run 参数):

      # certbot-auto certonly  -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"
      
  4. 续期证书

    • 对机器上所有证书 renew

      # certbot-auto renew  --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"
      
    • 对某一张证书进行续期

      # certbot-auto certificates
      

      记住证书名,比如 simplehttps.com,然后运行下列命令 renew:

      # certbot-auto renew --cert-name simplehttps.com  --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"
      

加入 crontab

编辑定时任务工作表

# crontab -e

加入如下命令

由于证书有效期<30天才会renew,所以crontab可以配置为1天或1周

# 1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns  --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"

配置 Nginx SSL

根据上述第三步,申请证书成功后得到的文件路径

证书存放路径:/etc/letsencrypt/live/example.com/fullchain.pem

私钥存放路径:/etc/letsencrypt/live/example.com/privkey.pem

根据域名不同存放于不同域名同名文件路径下。

  1. 创建 nginx 代码片段存放路径

    # mkdir -p /etc/nginx/snippets/
    
  2. 添加/编辑域名同名的配置文件

    # vim /etc/nginx/snippets/ssl-example.com.conf
    

    内容如下:

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    
    ssl_protocols TLSv1.2;
    ssl_ciphers EECDH+AESGCM:EECDH+AES;
    ssl_ecdh_curve secp384r1;
    ssl_prefer_server_ciphers on;
    
    ssl_stapling on;
    ssl_stapling_verify on;
    
    add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    
  3. 在需要使用 SSL 的网站配置文件中 SSL 部分server 中添加如下一行配置

    ...
    server {
        listen 443 ssl;
        server_name www.example.com;
    
        client_max_body_size 2048m;
        # 引用ssl代码段
        include snippets/ssl-*.me.akiya789.cn.conf;
       	...
    }
    

标题:certbot-auto 生成 https 通配符证书
作者:akiya789
地址:https://little-star.love/articles/2020/05/04/1588567954977.html

添加新评论