Let’s Encrypt Let’s Encrypt是一个提供免费TLS认证的网站,超过2600w的网站都在使用。其可以配合nginx,为网站生成ssl证书,提供https访问。Let’s Encrypt的证书有效期为90天,可以搭配systemd定时任务,定时更新证书。
PS:本操作基于Centos8和python3
证书申请
- 安装epel源
$ sudo dnf install epel-release
- 安装certbot
$ sudo dnf install certbot python3-certbot-nginx
因为我用的nginx作为http服务器,如果是apache,安装apache的插件,如下:
$ sudo dnf install certbot python3-certbot-apache
- 申请证书
$ 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,2,3处。最后选择需要申请证书的域名,如果全部都生成,直接回车即可。
- 配置证书
#生成的证书都在/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# 仅做示例
}
- 证书自动更新
更新证书脚本
$ 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
推荐阅读
- Linux|【Linux】centos下进行keepalived安装部署
- webpack 配置以及手写 plugins
- 一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点
- OS|多进程和多线程的区别是什么(多进程和多线程的优缺点分析)
- python|2021-06最新亲测CentOS-7下安装Redis的详细过程
- javascript|Vue.js全家桶仿哔哩哔哩动画 (移动端APP)
- 公司的开发需求|点击《el-table》让选中的行变色,亲测实用
- 开源项目|Vue项目实战 —— 哔哩哔哩移动端开发
- Linux|C语言程序设计现代方法v2 K.N.King 笔记及课后习题解答