Ray
admin@raychinki.studio
Raychinki Studio
使用LNMP申请Let's Encrypt泛域名SSL证书
使用LNMP申请Let's Encrypt泛域名SSL证书

由于之前不懂事,一直使用http方式来申请SSL证书,导致我修改了Ngnix配置文件后会无法续期证书,最近终于有空来研究了一下。

常用的验证方式有http-01和dns-01两种
keyboard_arrow_down

这里顺便引用一下Let’s Encrypt的验证方式的说明:

  • http-01:这是当今最常见的验证方式。Let’s Encrypt 向您的 ACME 客户端提供一个令牌,然后您的 ACME 客户端将在您对 Web 服务器的 http://.well-known/acme-challenge/(用提供的令牌替换 )路径上放置指定文件。该文件包含令牌以及帐户密钥的指纹。一旦您的 ACME 客户端告诉 Let’s Encrypt 文件已准备就绪,Let’s Encrypt 会尝试获取它(可能从多个地点进行多次尝试)。如果我们的验证机制在您的 Web 服务器上找到了放置于正确地点的正确文件,则该验证被视为成功,您可以继续申请颁发证书。如果验证检查失败,您将不得不再次使用新证书重新申请。
  • dns-01:此验证方式要求您在该域名下的 TXT 记录中放置特定值来证明您控制域名的 DNS 系统。该配置比 http-01 略困难,但可以在某些http-01 不可用的情况下工作。它还允许您颁发通配符证书。在 Let’s Encrypt 为您的 ACME 客户端提供令牌后,您的客户端将创建从该令牌和您的帐户密钥派生的 TXT 记录,并将该记录放在_acme-challenge下。然后 Let’s Encrypt 将向 DNS 系统查询该记录。如果找到匹配项,您就可以继续颁发证书!由于颁发和续期的自动化非常重要,只有当您的 DNS 提供商拥有可用于自动更新的 API 时,使用 dns-01 验证方式才有意义。我们的社区在此处提供了此类 DNS 提供商的列表。您的 DNS 提供商可能与您的域名注册商(您从中购买域名的公司)相同或不同。如果您想更改 DNS 提供商,只需在注册商处进行一些小的更改,而无需等待域名即将到期。

说人话,就是http方式只能逐个验证域名(raychinki.studio、www.raychinki.studio等),而dns方式可以验证泛域名(*.raychinki.studio,即通配符域名),dns方式可以通过在域名解析中设置一条TXT记录来验证,但是使用Let’s Encrypt续期的时候还需要重新添加一条新的记录,所以必须要配合域名注册商的API来使用从而自动添加记录并续期。

因为本站原本是用http申请的SSL证书,所以需要重新申请,具体步骤如下:

  • 为防止出现Bug,我直接用lnmp vhost del命令删除原虚拟机(删除后网站文件依然保留)
  • 根据Let’s Encrypt 免费通配符/泛域名SSL证书添加使用教程上的说明,开通域名注册商的API,本站域名是在GoDaddy注册的,所以在GoDaddy API Key Management中新建API KEY,建好之后及时记录Secret,因为只在创建的时候显示一次,窗口关闭后就看不到了,然后在网站服务器控制台中Export:
    export GD_Key="123456"
    export GD_Secret="abcdef"
  • 之后通过GoDaddy的API使用dns方式申请SSL证书并创建虚拟机,命令和lnmp vhost add基本相同:
    lnmp dns gd
  • 结果直接给我来了个Error:”The supported validation types are: http-01 , but you specified: dns-01″,难道因为我之前http方式申请的证书没到期就不让我换方式申请?这才刚续期啊,要我再等90天吗,泥煤!后来无意中看到论坛里说acme.sh续期不了,升级下就好了,抱着试一试的心态升级了一下:
    /usr/local/acme.sh/acme.sh --upgrade
  • 再用lnmp dns gd创建虚拟机结果真的申请证书成功了,要注意的就是用该命令创建虚拟机的时候,网站根目录没有默认在根目录下,需要手动输入/home/wwwroot/raychinki.studio,顺便再放一个手动更新acme.sh续期证书的命令以防不测:
    acme.sh --cron -f

以上,本站SSL证书成功切换为泛域名证书,收工!

Raychinki Studio

使用LNMP申请Let's Encrypt泛域名SSL证书
由于之前不懂事,一直使用http方式来申请SSL证书,导致我修改了Ngnix配置文件后会无法续期证书,最近终于有空来研究了一下。 常用的验证方式有http-01和dns-01两种 keyboar…
扫描二维码继续阅读
2020-01-30