Let's Encrypt TLS 证书申请 - HTTP 验证模式

Let's Encrypt TLS 证书申请 - HTTP 验证模式

Let's Encrypt TLS 证书申请 - HTTP 验证模式 有时我们希望在服务器里申请一个免费的 Let's Encrypt TLS 证书。 并且不希望使用,一键脚本 宝塔面板等等,同时,我们不希望专门去添加 DNS TXT 记录来做验证。 这时候就需要通过我们 HTTP 验证手动申请。

Let's Encrypt TLS 证书申请 - HTTP 验证模式

有时我们希望在服务器里申请一个免费的 Let's Encrypt TLS 证书。
并且不希望使用,一键脚本 宝塔面板等等,同时,我们不希望专门去添加 DNS TXT 记录来做验证。 这时候就需要通过我们 HTTP 验证手动申请。

当申请 Let's Encrypt 证书时,为了证明你的域名,需要完成一个“验证”过程。Let's Encrypt 主要提供两种验证模式:HTTP 和 DNS。这两种验证模式的工作原理如下:

  1. HTTP 验证
    工作原理:验证者需要在其服务器上的特定位置提供一个特定文件。这通常是通过 .well-known/acme-challenge/ 路径完成的。Let's Encrypt 会从外部尝试访问这个文件( 通过80端口 ),如果它可以成功访问并验证这个文件的内容,那么域名的验证就被认为是成功的。
    优点:简单且快速,不需要对 DNS 记录进行任何更改。
    缺点:需要能够对 Web 服务器进行配置,使其提供特定的文件。如果服务器位于某种 CDN 或负载均衡器后面,可能会遇到问题。
  1. DNS 验证
    工作原理:验证者需要在其域名的 DNS 记录中添加一个特定的 TXT 记录。Let's Encrypt 会从外部尝试查询这个 TXT 记录,如果它可以成功找到并验证这个 TXT 记录的内容,那么域名的验证就被认为是成功的。
    优点:不需要 Web 服务器,适用于任何类型的证书(包括通配符证书)。而 HTTP 验证不支持通配符证书。
    缺点:需要能够修改域名的 DNS 记录,这可能需要更高的权限或与域名提供商交互。

1. 安装 acme.sh

acme.sh 是一个用于从 Let's Encrypt 或其他 ACME 证书颁发机构获取证书的纯 Shell 脚本。它轻量、简单且功能强大。 我们将使用它来进行申请证书。

1.1 从 Github Clone

我们可以选择从 Github 克隆过来并安装。

git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install

1.2 下载安装脚本安装(推荐)

  1. 通过 curl:
​curl https://get.acme.sh | sh -s email=my@example.com(改为你的邮箱)
  1. 通过 wget:
​wget -O -  https://get.acme.sh | sh -s email=my@example.com(改为你的邮箱)

2.验证并安装证书

首先我们要确保开放 80 端口。

向 Let's Encrypt 申请证书并验证

acme.sh --issue -d prefix.domain.top(改为你的域名) --standalone -k ec-256

以下为隐藏域名后的输出消息。实际输出应该为你的域名。

[Sat 21 Oct 2023 11:42:51 PM EDT] Your cert is in: /root/.acme.sh/prefix.domain.top_ecc/prefix.domain.top.cer
[Sat 21 Oct 2023 11:42:51 PM EDT] Your cert key is in: /root/.acme.sh/prefix.domain.top_ecc/prefix.domain.top.key
[Sat 21 Oct 2023 11:42:51 PM EDT] The intermediate CA cert is in: /root/.acme.sh/prefix.domain.top_ecc/ca.cer
[Sat 21 Oct 2023 11:42:51 PM EDT] And the full chain certs is there: /root/.acme.sh/prefix.domain.top_ecc/fullchain.cer

接下来我们安装证书:

acme.sh --installcert -d prefix.domain.top --fullchainpath /etc/ssl/private/prefix.domain.top.crt --keypath /etc/ssl/private/prefix.domain.top.key --ecc

成功安装:

[Sat 21 Oct 2023 11:54:21 PM EDT] Installing key to: /etc/ssl/private/prefix.domain.top.key
[Sat 21 Oct 2023 11:54:21 PM EDT] Installing full chain to: /etc/ssl/private/prefix.domain.top.crt

可以看到最终安装的证书在所示路径上。

3. 续签证书

acme.sh 可能会自动续签。我们这里演示手动续签。

续签证书:

acme.sh --renew -d prefix.domain.top --ecc

安装续签的证书:

acme.sh --installcert -d prefix.domain.top --fullchainpath /etc/ssl/private/prefix.domain.top.crt --keypath /etc/ssl/private/prefix.domain.top.key --ecc

之后可能需要重启用到证书的程序。

Comment