为网站添加Let’s Encrypt 泛域名证书

之前本站添加的SSL证书只包含了lymsaga.top和www.lymsaga.top两个域名。如果某些情况下需要使用Ngnix的Stream模块进行SNI分流,新配置的如xxx.lymsaga.top是不能使用原先的证书的,现在可以通过申请*.lymsaga.top的泛域名证书实现所有“xxx.lymsaga.top”都可以进行TLS认证。

为了验证域名所有权,Let’s Encrypt 支持两种方式来验证:

1、域名的 DNS:配置一个随机的 TXT 记录来验证

2、域名的访问:配置一个随机的 URL 地址来验证

这里我使用阿里云为例,通过DNS验证方式,使用acme.sh实现,其他的DNS服务商方法类似。

acme.sh 支持多种域名验证方式。详细列表点这里

acme.sh 访问阿里云 DNS 是通过阿里云 DNS 公开 API 以及用户的 AK 来进行交互的。

首先我们在阿里云子账户中添加一个”用户“。

选择”访问控制“,然后点击“用户管理”

选择”创建用户“,用户登录名称和显示名称可以自定义,比如”acme“,勾选”编程访问“,点击”确定“

验证之后,会显示这个用户的,密钥,也就是“AccessKeyId”和“AccessKeySecret”,这两个保存好后面要用到,可以用CSV文件导出。

返回后,添加该用户的权限

 

添加管理云解析的权限,(此处之前已经添加过)

安装 sh 脚本

# curl https://get.acme.sh | sh

重载配置

# source ~/.bashrc

找到.bashrc文件,在最后处增加

# export Ali_Key="AccessKeyId"
# export Ali_Secret="AccessKeySecret"

然后

# source ~/.bashrc

接下来申请颁发证书

# acme.sh --issue --dns dns_ali -d lymsaga.top -d *.lymsaga.top

这里会进行域名的 DNS 验证,中间会等待 120 秒来验证正确性,验证成功后会有成功标记。

root@vultr:~# acme.sh –issue –dns dns_ali -d lymsaga.top -d *.lymsaga.top
[Mon 05 Apr 2021 11:42:23 AM CST] Domains have changed.
[Mon 05 Apr 2021 11:42:23 AM CST] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Mon 05 Apr 2021 11:42:23 AM CST] Multi domain=’DNS:lymsaga.top,DNS:*.lymsaga.top’
[Mon 05 Apr 2021 11:42:23 AM CST] Getting domain auth token for each domain
[Mon 05 Apr 2021 11:42:28 AM CST] Getting webroot for domain=’lymsaga.top’
[Mon 05 Apr 2021 11:42:28 AM CST] Getting webroot for domain=’*.lymsaga.top’
[Mon 05 Apr 2021 11:42:28 AM CST] Adding txt value: … for domain: _acme-challenge.lymsaga.top
[Mon 05 Apr 2021 11:42:32 AM CST] The txt record is added: Success.
[Mon 05 Apr 2021 11:42:32 AM CST] Adding txt value: … for domain: _acme-challenge.lymsaga.top
[Mon 05 Apr 2021 11:42:36 AM CST] The txt record is added: Success.
[Mon 05 Apr 2021 11:42:36 AM CST] Let’s check each DNS record now. Sleep 20 seconds first.
[Mon 05 Apr 2021 11:42:57 AM CST] See: https://github.com/acmesh-official/acme.sh/wiki/dnscheck
[Mon 05 Apr 2021 11:42:57 AM CST] Checking lymsaga.top for _acme-challenge.lymsaga.top
[Mon 05 Apr 2021 11:42:57 AM CST] Domain lymsaga.top ‘_acme-challenge.lymsaga.top’ success.
[Mon 05 Apr 2021 11:42:57 AM CST] Checking lymsaga.top for _acme-challenge.lymsaga.top
[Mon 05 Apr 2021 11:42:57 AM CST] Domain lymsaga.top ‘_acme-challenge.lymsaga.top’ success.
[Mon 05 Apr 2021 11:42:57 AM CST] All success, let’s return
[Mon 05 Apr 2021 11:42:57 AM CST] Verifying: lymsaga.top
[Mon 05 Apr 2021 11:43:02 AM CST] Pending
[Mon 05 Apr 2021 11:43:21 AM CST] Success
[Mon 05 Apr 2021 11:43:21 AM CST] Verifying: *.lymsaga.top
[Mon 05 Apr 2021 11:43:26 AM CST] Pending
[Mon 05 Apr 2021 11:43:42 AM CST] Success
[Mon 05 Apr 2021 11:43:42 AM CST] Removing DNS records.
[Mon 05 Apr 2021 11:43:42 AM CST] Removing txt: …. for domain: _acme-challenge.lymsaga.top
[Mon 05 Apr 2021 11:43:46 AM CST] Removed: Success
[Mon 05 Apr 2021 11:43:50 AM CST] Verify finished, start to sign.
[Mon 05 Apr 2021 11:43:50 AM CST] Lets finalize the order.
[Mon 05 Apr 2021 11:43:50 AM CST] Le_OrderFinalize=’https://acme-v02.api.letsencrypt.org/acme/finalize/…/…’
[Mon 05 Apr 2021 11:43:52 AM CST] Downloading cert.
[Mon 05 Apr 2021 11:43:52 AM CST] Le_LinkCert=’https://acme-v02.api.letsencrypt.org/acme/cert/….’
[Mon 05 Apr 2021 11:43:53 AM CST] Cert success.

最后会给出证书的位置,如果你之前申请过单域名SSL证书,可能会直接安装到之前的文件夹中,路径和名称与原来保持一致。

如果路径不在nginx路径下,不要使用acme给出的目录,使用 –installcert 命令,将证书安装到指定目标位置,然后证书文件会被复制到相应的位置,并重启 nginx

# acme.sh --installcert -d lymsaga.top -d *.lymsaga.top --ca-file /root/ssl/ca.cer --cert-file /root/ssl/lymsaga.top.cer --key-file /root/ssl/lymsaga.top.key --fullchain-file /root/ssl/fullchain.cer --reloadcmd "service nginx force-reload"

查看更新

# crontab -l

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注