申请 Let's Encrypt 的免费通配符证书

年轻人的第一个通配符证书!(*^_^*)

在今天,Let’s Encrypt 宣布他们已经支持了通配符证书(Wildcard Certificates),通配符证书是一个可以被多个子域使用的公钥证书,在多子域名的情况下非常方便。市面上的通配符证书大多数比较昂贵,不适合个人使用,而 Let’s Encrypt 则主推免费证书。在去年的时候宣布今年支持通配符证书,在预定发布的 2.27 为了保证更好的测试推迟了一段时间,今天终于发布了。

这篇博客就介绍一下怎么申请 Let’s Encrypt 的免费通配符证书。

下载最新的 Certbot

通配符证书需要客户端支持 ACME v2,支持 ACME v2 的客户端列表:https://letsencrypt.org/docs/client-options/

我们使用 certbot,需要 0.22.0 版本以上的 certbot,如果版本不到 0.22.0,可以利用 pip 更新或者从 GitHub 下载:

1
2
git clone https://github.com/certbot/certbot
cd certbot

安装使用 Screen

因为申请过程中涉及到 DNS TXT 记录的更新,更新需要的时间未知,所以使用 Screen 避免等待时间过长服务器自动断开连接:

1
2
yum install -y screen
screen -S ssl

这样,如果服务器因为长时间无操作断开连接,我们只需要重新登陆服务器,然后执行:

1
screen -r ssl

即可恢复会话。

申请 ssl

1
sudo ./certbot-auto certonly --manual -d *.example.com -d example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

注意:

  1. -d 选项后是你要申请通配符证书的域名
  2. 通配符证书的申请必须使用 DNS TXT 的方式验证域名所有权

根据提示进行几个选择后会出现:

1
2
3
4
5
6
7
8
9
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

此时我们需要在自己的域名解析下添加一条 TXT 记录:

1
_acme-challenge.example.com

值(随机生成)是:

1
qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI

添加完成后最好等待差不多十几分钟,按下 Enter,certbot 就会验证 DNS TXT 记录是否是随机生成的 qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI,如果验证成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-06-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

如果验证失败,可能 DNS TXT 记录没有及时更新,重试一次再多等一会儿 :)

更新 Nginx 设置

更新 Nginx 中所有子域名的配置文件,其实只需要更新其中关于 ssl 位置的两行:

1
2
ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

将原来的地址更新为申请 ssl 成功时提示的地址就行了:

1
2
3
4
5
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem

更新后:

1
2
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Apache 同理。

重启 Nginx,访问网站,浏览器查看 ssl 证书:

Wildcard CA

-------------本文结束感谢阅读-------------
  • 本文标题:申请 Let's Encrypt 的免费通配符证书
  • 本文作者:xlui
  • 发布时间:2018年03月14日 - 17:03
  • 最后更新:2018年04月10日 - 18:04
  • 本文链接: https://xlui.me/t/letsencrypt-wildcard-ca/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!