certbot指南.md 4.8 KB

certbot操作指南

一个免费SSL证书获取工具

PS:如果是单机的话,不要使用docker来运行nginx,否则会为certbot的操作会增加复杂度。

前言

  1. certbot是一个SSL证书(Let‘s Encrpt)申请工具,免费的SSL证书,每90天需要自己续期(可自动化),支持泛域名证书的申请
  2. 如果要申请泛证书(例:*.zhixinghe1.top),需要使用DNS的验证方式,这个国内域名商的验证方式比较麻烦,需要自己手动操作或者找插件
  3. 如果不熟悉操作,先加上--dry-run参数在测试环境中实操一下,再正式申请,否则失败次数过多,会有一段时间禁止申请
  4. 如果同时操作申请多个域名(精准域名),也是只会生成一个SSL证书
  5. 使用nginx插件的话,能够自动配置nginx,注:--dry-run在该情况下无法使用
  6. 使用nginx插件的话,nginx必须能狗正常操作,certbot才能正常执行

常用命令

# 查看主机中的证书信息
certbot certificates

# 证书申请,--dry-run 即是测试环境,-a manual 交互式申请
certbot certonly -a manual --dry-run

# 证书申请,使用nginx插件,--dry-run在该情况下无法使用
certbot --nginx

# 从证书颁发机构撤回SSL证书,交互模式中选择同步删除本地机器中的证书,如果错过了,需要使用delete指令删除
# 证书名称指的是certbot certificates中的Certificate Name
cerbot revoke --cert-name 证书名称

# 从本地机器中删除证书,但是不会从证书颁发机构撤回SSL证书
# 没有任何参数,会进入交互模式
certbot delete

# 证书续期(可以把本机所有的都续期一次)
certbot renew --dry-run

申请步骤

  1. 安装certbot

  2. 执行证书申请命令,见常用指令。

  3. 按交互界面往下操作

  4. 如果是申请的精准域名,则按提示操作即可

  5. 如果申请的是泛域名,需要进自己的域名供应商里的域名解析里,按格式把certbot提供的字符串加入到解析中

  1. 在nginx需要创建一个指定访问路径的文件,并放入certbot工具提供的字符串,供certbot验证

在nginx中通过配置一个文件路径,并把内容放到文件中即可

  1. 证书申请成功后,nginx的SSL证书配置,如果是泛域名的SSL证书,可以在http块中直接使用SSL全局指令直接配置,否则需要自己一个个配置

    http {
    	ssl_certificate /path/to/your/fullchain.pem;
    	ssl_certificate_key /path/to/your/privkey.pem;
    }
    

nginx插件的使用

  1. 如果nginx的配置conf.d文件夹中没有default.conf的话,那么执行中可能没有输入待申请域名的选项。
  2. 如果nginx的配置conf.d文件夹中有相关域名的配置的话,那么执行中可能没有输入待申请域名的选项,取而代之的是直接询问那个nginx中已配置域名需要启用SSL。

自动续期

通过添加定时任务来自动对证书进行续期,每天0点、12点执行一次续期任务,并把信息输出到指定目录

# 编辑定时任务
crontab -e

# 查看定时任务
crontab -l

# 把要执行任务的写入crontab中
0 0,12 * * * /usr/bin/certbot renew --renew-hook "/usr/sbin/nginx -s reload" >> /home/zkpk/certbot-renew.log 2>&1

说明:renew只能,只有快要过期的证书才会进行续期,如果加了参数 --force-renew则不考虑时间直接强制续期

参考