前言
为了网络数据的传输安全 , 越来越多的网站使用了
HTTPS
协议 , 并且主流浏览器也会对未启用HTTPS
协议的网站进行了不安全标记 , 所以升级HTTPS
协议成为了一种趋势 。升级
HTTPS
协议 , 首先需要通过证书机构(CA
)申请颁发SSL/TLS
证书 , 因为SSL
证书价格比较昂贵 , 很多人会选择使用免费的颁发机构进行证书生成 , 本文我们通过Let's Encrypt
进行证书颁发 。
Let's Encrypt 介绍
Let's Encrypt 是由 非营利性Internet 安全研究小组 (ISRG) 提供的免费、自动化和开放的证书颁发机构。
从 Let's Encrypt 获得证书 , 官方提供了两种方式进行证书获取 :
推荐大家使用ACME客户端 , 本文借助工具 acme.sh 从 Let's Encrypt 生成免费 TLS 证书并进行安装 。
安装工具
-
安装 acme.sh
[root@example ~]# curl https://get.acme.sh | sh # 或者 [root@example ~]# wget -O - https://get.acme.sh | sh
-
验证是否安装成功
[root@example ~]# acme.sh -v https://github.com/acmesh-official/acme.sh v3.0.2
-
开启自动更新
由于 acme 协议和 Let's Encrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步. 建议开启自动更新
[root@example ~]# acme.sh --upgrade --auto-upgrade
生成证书
-
webroot
模式[root@example ~]# acme.sh --issue -d domain.com --webroot /data/wwwroot/domain.com/
-
其他模式请参考 https://wiki.acme.sh
安装证书
-
Nginx 安装
[root@example ~]# acme.sh --install-cert -d domain.com \ --key-file /usr/local/nginx/conf/ssl/domain.com.key \ --fullchain-file /usr/local/nginx/conf/ssl/domain.com.crt \ --reloadcmd "service nginx force-reload"
-
Apache 安装
[root@example ~]# acme.sh --install-cert -d example.com \ --cert-file /usr/local/apache/conf/ssl/cert.pem \ --key-file /usr/local/apache/conf/ssl/key.pem \ --fullchain-file /usr/local/apache/conf/ssl/fullchain.pem \ --reloadcmd "service apache2 force-reload"
-
更新证书
[root@example ~]# acme.sh --renew -d domain.com
定时任务
- 添加定时任务
# 进入编辑模式 [root@example ~]# crontab -e # 手动添加定时任务 43 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null # :wq 保存退出
- 查看定时任务
[root@example ~]# crontab -l 43 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null