Linux|Let‘s Encrypt申请ssl证书

Let’s Encrypt Let’s Encrypt是一个提供免费TLS认证的网站,超过2600w的网站都在使用。其可以配合nginx,为网站生成ssl证书,提供https访问。Let’s Encrypt的证书有效期为90天,可以搭配systemd定时任务,定时更新证书。
PS:本操作基于Centos8和python3
证书申请

  1. 安装epel源
$ sudo dnf install epel-release

  1. 安装certbot
$ sudo dnf install certbot python3-certbot-nginx

因为我用的nginx作为http服务器,如果是apache,安装apache的插件,如下:
$ sudo dnf install certbot python3-certbot-apache

  1. 申请证书
$ sudo certbot --nginx --nginx-server-root=/home/farm/nginx/conf certonly

PS:我安装的nginx目录在用户家目录下,需要将nginx放入环境变量,或者是建立一个软链接,保证nginx命令可以正常执行,我用的是建立软链接的方案
$ sudo ln -s /home/farm/nginx/sbin/nginx /usr/bin/nginx

  1. 证书生成
    Linux|Let‘s Encrypt申请ssl证书
    文章图片
证书申请过程中,需要填写邮箱,和确认条款。就是上图标注1,2,3处。最后选择需要申请证书的域名,如果全部都生成,直接回车即可。
  1. 配置证书
#生成的证书都在/etc/letsencrypt/live/目录下,为申请的域名 在nginx.conf文件中添加以下配置 server { listen 443 ssl; ssl_certificate/etc/letsencrypt/live//fullchain.pem; ssl_certificate_key/etc/letsencrypt/live//privkey.pem; proxy_pass http://127.0.0.1:8080# 仅做示例 }

  1. 证书自动更新
更新证书脚本
$ vim renew_ssl.sh#写入以下内容 $ certbot renew

创建systemd定时任务
a. 创建Service单元
$ cd /etc/systemd/system $ sudo vim renew_ssl.service

写入以下内容:
[Unit] Description=certbot renew[Service] ExecStart=/bin/bash /home/farm/nginx/sh/renew_ssl.sh

启动Service单元
$ sudo systemctl start renew_ssl.service

b. 创建Timer单元
$ cd /etc/systemd/system $ sudo vim renew_ssl.timer

写入以下内容:
[Unit] Description=run renew_ssl.sh every 12 hours [Timer] OnUnitActiveSec=43200s Unit=renew_ssl.service[Install] WantedBy=multi-user.target

【Linux|Let‘s Encrypt申请ssl证书】启动Timer单元
$ sudo systemctl daemon-reload $ sudo systemctl enable renew_ssl.timer $ sudo systemctl start renew_ssl.timer

    推荐阅读