Let's Encrypt:免费生成HTTPS证书
目录
简介
Let’s Encrypt 是一个免费,自动化和开放的证书颁发机构,由非营利性机构互联网安全研究组(ISRG)驱动。该机构可以为域名颁发免费的 HTTPS 证书,每次证书的有效期为 90 天。
其证书颁发基于 ACME 协议,其中默认使用 ACME v1 协议,泛域名证书需要使用 ACME v2 协议。通过在 Web 服务器上使用支持 ACME 协议的客户端来申请证书。官方推荐使用 Certbot。
安装 Certbot
Certbot 是一个 ACME 协议客户端,它能够自动执行证书的颁发和安装,不会中断服务。
访问 Certbot 网站,选择使用的 Web 服务器和操作系统,网站会给出详细的安装指导。这里以在 Ubuntu 18.04 上使用 Nginx 为例。
|
|
签发普通证书
|
|
或者使用 Certbot 提供的插件自动编辑 Nginx 的配置(不推荐):
|
|
签发泛域名证书
泛域名证书只能使用 DNS 验证的方式,需要单独安装 dns-plugins。但是目前还没有国内云服务商和 DNS 服务商的 plugin,这里只能手动签发。
|
|
-d
指定域名;--manual
手动签发;--preferred-challenges
指定验证方式,泛域名只能选择 DNS 验证;--server
指定验证服务器 URL,默认为 ACME v1 协议地址,泛域名使用 ACME v2 协议,需要显式指定;
注意,签发泛域名证书会公开服务器的 IP 地址。
按照要求输入邮箱,同意协议,当看到下面信息时:
|
|
暂停操作并在 DNS 服务商处配置 TXT 域名解析,记录为 _acme-challenge.example.com
,结果为上述字符串。
使用以下命令在服务器上验证解析生效(一般需要几分钟):
|
|
生效后,回到 Certbot 申请中回车继续,即可签发成功。
续签证书
普通证书会自动续签,泛域名证书由于是手动生成的,并不能自动续签。
可以使用下面的命令在到期前 30 天手动续签:
|
|
重新签发证书
如果因为系统重置等原因,导致证书被删除,可以重新签发证书。
|
|
撤销证书
如果证书不再使用,或者密钥被盗,可以撤销证书:
|
|
注意两点:
- 撤销证书时,需要指定证书路径而不是域名;
- 指定的证书路径以
cert.pem
结尾,而不是证书的实际名称;
证书撤销后,要删除证书,否则还会自动续签:
|
|