Let’s Encrypt
一、简介
Let’s Encrypt 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。 简单的说,借助 Let’s Encrypt 颁发的证书可以为我们的网站免费启用 HTTPS(SSL/TLS) 。 Let’s Encrypt免费证书的签发/续签都是脚本自动化的,官方提供了几种证书的申请方式方法,点击此处 快速浏览。 官方推荐使用 Certbot 客户端来签发证书,这种方式可参考文档自行尝试,不做评价。 我这里直接使用第三方客户端 acme.sh 申请,据了解这种方式可能是目前 Let’s Encrypt 免费证书客户端最简单、最智能的 shell 脚本,可以自动发布和续订 Let’s Encrypt 中的免费证书。
二、安装
前提:
在生产证书之前,Let’s Encrypt 需要验证域名是否是属于你的,才能生产证书。Let’s Encrypt` 支持通过 DNS 解析一条 TXT 记录来验证。 我使用的方法也是这种,可以手动去配置也可以使用脚本调用dns服务的api进行自动验证(自动验证是实现自动签发的关键),该脚本acme.sh 提供了API快速设置。
还有一种验证方式 使用 HTTP 验证签发证书,原理是通过在网站指定路径下加入验证文件,外部正常访问即认证通过。具体参考:https://u.sb/acme-sh-ssl/ acme:https://github.com/acmesh-official/acme.sh
安装:
curl https://get.acme.sh | sh
#网络问题国内安装参考:https://github.com/acmesh-official/acme.sh/wiki/Install-in-China
成功安装如下:
DNS 解析验证:
这里使用的是阿里云的dns解析服务,所以需要获取能够调用阿里云dns权限的账号 AccessID 和 AccessKeySecret。
AccessID、KeySecret获取如下:
账号权限确认:
修改配置
vim ~/.bashrc
将 dns解析服务的key填入:
export Ali_Key=""
export Ali_Secret=""
source ~/.bashrc
生产证书
运行如下命令:
acme.sh --issue --dns dns_ali -d example.com -d *.example.com --server letsencrypt
成功后界面上有文件的存放地址:
cd /www/server/panel/vhost/cert/guozh.net/
ll
-rw-r--r-- 1 root root 1648 Jul 12 16:27 ca.cer
-rw-r--r-- 1 root root 3563 Jul 12 16:27 fullchain.cer
-rw-r--r-- 1 root root 1915 Jul 12 16:27 xxx.net.cer
-rw-r--r-- 1 root root 558 Jul 12 16:27 xxx.net.conf
-rw-r--r-- 1 root root 980 Jul 12 16:26 xxx.net.csr
-rw-r--r-- 1 root root 220 Jul 12 16:26 xxx.net.csr.conf
-rw-r--r-- 1 root root 1675 Jul 12 16:26 xxx.net.key
其中
证书文件 fullchain.cer
密钥文件 xxx.net.key
填写SSL证书内容就是这两个
完结
前面说了Let’s Encrypt` 支持通过 DNS 解析一条 TXT 记录来验证。 但是我们在整个安装和生成过程并没有看到啥时候添加了TXT记录,其实有的,如果在安装过程中仔细看日志,就能看到先是 Add 然后 Check 最后 Remove 。
证书续期
Let’s Encrypt 证书的有效期是三个月。但我们通过脚本acme.sh启动就不用担心,因为它写入了定时命令。用 crontab -l 列出定时任务。