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

·  阅读 3340
原文链接: xlui.me

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

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

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

下载最新的 Certbot

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

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

git clone https://github.com/certbot/certbot
cd certbot复制代码

安装使用 Screen

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

yum install -y screen
screen -S ssl复制代码

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

screen -r ssl复制代码

即可恢复会话。

申请 ssl

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 的方式验证域名所有权

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

-------------------------------------------------------------------------------
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 记录:

_acme-challenge.example.com复制代码

值(随机生成)是:

qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI复制代码

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

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 位置的两行:

ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;复制代码

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

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复制代码

更新后:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;复制代码

Apache 同理。

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

Wildcard CA

收藏成功!
已添加到「」, 点击更改