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. 证书生成
    证书生成过程

证书申请过程中,需要填写邮箱,和确认条款。就是上图标注1,2,3处。最后选择需要申请证书的域名,如果全部都生成,直接回车即可。

  1. 配置证书
#生成的证书都在/etc/letsencrypt/live/<domain>目录下,<domain>为申请的域名
在nginx.conf文件中添加以下配置
server {
    listen 443 ssl;
    ssl_certificate      /etc/letsencrypt/live/<domain>/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/<domain>/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

启动Timer单元

$ sudo systemctl daemon-reload
$ sudo systemctl enable renew_ssl.timer
$ sudo systemctl start renew_ssl.timer

猜你喜欢

转载自blog.csdn.net/x1172031988/article/details/119522855