免费 Let's Encrypt 证书申请、部署全攻略与自动续期教程
2018-3-11
| 2023-9-1
0  |  0 分钟
页面类型
发布状态
发布日期
文章地址
内容摘要
文章标签
文章分类
icon代码
密码
如今 HTTPS 证书不再是像以前那么昂贵、缓慢,HTTP/2 等协议的支持使 HTTPS 变得快速甚至比 HTTP 要快,本篇教程利用 Monit 监控 Shell 脚本配合 ssl-cert-check 实现证书过期的自动续签,续签失败邮件告警的解决方案

证书的申请

以互联网安全小组提供的 Let's Encrypt 证书为例,简单介绍从安装证书工具到申请证书的方法

安装 CertBoot 证书工具

Certbot 官方网站可取得各系统环境的安装教程,官方有列举的环境教程都比较简单,几乎都是通过系统的包管理工具即可顺利安装;这里以 Linux Debian9 / Nginx 举例
### Let's Encrypt 证书的申请
前面我们已经安装了 Let's Encrypt 的证书管理工具,现在我们通过这个管理工具取得证书。
申请证书过程中需要域名可以正常访问,证书管理工具需要访问网站下的 .well-known 目录
取得的证书在/etc/letsencrypt/live/ser.domain.com/ 文件夹内,证书文件为: fullchain.pem 密钥文件为:privkey.pem ,直接在Nginx引用这两个文件就可以了,ssl_dhparam 证书假设存放在 /certificate 文件夹内。
如何配置网站的 HTTPS 这里推荐一个生成配置的网站 Mozilla SSL Configuration Generator
下面是 NGINX 的配置举例

NGINX HTTP/2 的启用

NGINX 启用 HTTP/2 协议需要满足下面几个条件:
  1. ngx_http_v2_module 模块
  1. ngx_http_ssl_module 模块
  1. NGINX V1.9.5 以上
  1. OpenSSL V1.0.2 以上
若系统的 OpenSSL 低于 V1.0.2 则需要更新系统 OpenSSL 或者编译 NGINX 的时候指定 OpenSSL 源码文件夹

Let's Encrypt 证书自动续签

经过上面的安装生成后网站现在已经可以正常使用HTTPS协议,但是 Let's Encrypt 只有 90 天的有效期,90天一过就需要重新申请证书,虽说申请挺方便,但是总有忘记的时候。网上的自动签署教程几乎都是清一色的利用 CronTab 或者 SYSTemd 定时签署;感觉不妥,万一程序出问题签署失败了自己也不知道,索性写个简单脚本实时监控证书过期时间,以及利用 Monit 监控 Shell 返回的退出码判断是否成功续签了证书。

Let's Encrypt 证书续签脚本

Debian 执行 sudo apt-get install ssl-cert-check 安装,ssl-cert-check 用来读取证书过期时间
当证书还剩 30天过期,则运行 /usr/bin/certbot renew 进行续签证书
成功续签、无需续签脚本返回 0 ;续签失败脚本返回 1

安装 Monit 程序

邮件告警实现于 Monit 监控程序,由于我的服务器的服务都是由 Monit 监控的,索性就直接拿来用了。
RedHat / CentOS / Fedora 安装
Ubuntu / Debian / Linux Mint 安装

配置 Monit 监控脚本

配置 Monit 邮件告警功能,修改配置文件 sudo nano /etc/monit/monitrc
添加一个脚本监控 sudo nano /etc/monit/conf.d/shell

其他自动签署方案

官方 Let's Encrypt 看到的一款NGINX 插件 lua-resty-auto-ssl ,可以实现自动证书签署,过期自动续签,挺强大但是需要安装一些依赖环境,若没有其他环境用到 OpenResty LuaRocks 感觉有点小题大做了,各位看官视自己情况选着使用吧。
后端运维
  • 建站
  • Nginx
  • 树莓派音乐闹钟,定时播放网易云音乐每日推荐歌单歌曲及插播语音天气预报一个合格的服务器自动备份案例,闭环备份机制出错邮件报警
    目录