type
status
date
slug
summary
tags
category
icon
password
🤧
在使用let's encrypt获取免费的HTTPS证书的时候,let's encrypt需要对域名进行验证,以确保域名是你自己的。
let's encrypt的免费证书有3个月的时间,到期前需要续期。 第一次使用certbot签证书时如果输入了邮箱地址,证书快到期前是会发邮件提醒你的。

下载Certbot

申请证书

签发证书(standalone)

说明
  • —config-dir
    • 证书生成的路径
  • -email
    • 通知的邮箱地址
  • -cert-name
    • 证书文件夹名称
  • -d
    • 要签的域名,-d后面跟着一个域名,如果有多个域名要签的话记得每一个单独的域名前都要写-d。certbot的泛域名其实只支持诸如*.example.com,如要直接使用example.com,就得为其单独也签发一条

泛域名DNS-TXT签发证书

服务器不开通80/443端口,通过DNS-TXT的方式申请证书
说明
  • -config-dir
    • 证书生成的路径
  • -email
    • 通知的邮箱地址
  • -cert-name
    • 证书文件夹名称
  • -d
    • 要签的域名,-d后面跟着一个域名,如果有多个域名要签的话记得每一个单独的域名前都要写-d。certbot的泛域名其实只支持诸如*.example.com,如要直接使用example.com,就得为其单独也签发一条
  • -manual
    • 手动模式
回车后,最后会要求在DNS控制界面增加一条TXT记录用于,域名验证
notion image
添加TXT示例如下
notion image
添加完记录保存之后,最好要检查一下解析记录
dig网址 https://toolbox.googleapps.com/apps/dig
输入【主机记录】如出现的TXT值与certbot提供的值相同,则表示添加记录成功

生成证书

最后回车确认,证书便在/usr/local/nginx/cert/zhsk_fjwanfu_com/live中,若没有指定路径,默认则在/etc/letsencrypt/live/{域名}
这个目录下一般会有四个文件:
文件
描述
cert.pem
服务器证书
chain.pem
包含Web浏览器为验证服务器而需要的证书或附加中间证书
fullchain.pem
cert.pem+chain.pem
privkey.pem
证书的私钥
一般用fullchain.pemprivkey.pem就可以了

Nginx配置使用证书

自动续签证书

签发证书(standalone)

使用下面的命令续期
设置自动续期的话,只需要写脚本放在Cron中定时运行即可,crontab -e打开crontab脚本,添加如下的脚本
这个脚本表示每隔 7 天,夜里 3 点整自动执行检查续期命令一次。续期完成后,重启 nginx 服务
 

泛域名DNS-TXT签发证书

虽然 certbot 提供了自动续期命令,但是当我们把自动续期命令配置为定时任务时,我们无法手动添加新的 TXT 记录用于 certbot 验证。
好在 certbot 提供了一个 hook,可以编写一个 Shell 脚本。在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录
这里以阿里云为例

安装 aliyun cli 工具

安装 certbot-dns-aliyun 插件

申请证书

  1. 测试是否能正确申请:
    1. 正式申请时去掉 --dry-run 参数:
  1. 证书续期
    1. 如果以上命令没有错误,把 --dry-run 参数去掉。
  1. 自动续期
    1. 添加定时任务 crontab。
      输入
      这是每个月1号3点29分执行一次强制证书更新后重启nginx
      脚本中的 --deploy-hook "nginx -s reload" 表示在续期成功后自动重启 nginx。
       
【星际穿越】混剪视频Jenkins构建部署