使用acme.sh(手动验证)生成Let’s Encrypt 证书
Let’s Encrypt —— 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。
acme.sh的安装
- 方法1:
curl https://get.acme.sh | sh -s email=my@email.com
my@example.com
应该替换为你的真实电子邮箱地址。这个邮箱地址是用于Let’s Encrypt在需要时与你联系,例如在证书即将过期时发送提醒,或者在证书续期失败时通知你。
⚠️ 在中国大陆,由于网络环境的特殊性,直接访问国外资源可能会遇到困难。
-
使用国内的镜像站点来安装acme.sh。例如,使用阿里云的镜像:
curl https://ghproxy.com/https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALL_ACME_SH_EXEC="sh" sh -s email=my@email.com
或者使用清华大学TUNA镜像:
curl https://cdn.jsdelivr.net/gh/acmesh-official/acme.sh@master/acme.sh | INSTALL_ACME_SH_EXEC="sh" sh -s email=my@email.com
-
安装脚本会自动执行,并使用你提供的邮箱地址来注册acme.sh。
- 方法2:
wget -O - https://get.acme.sh | sh -s email=my@example.com
- 方法3:git安装
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com
安装命令将执行3个操作:
1.创建并复制acme.sh
到您的主目录 ( $HOME
): ~/.acme.sh/
。所有证书也将放置在此文件夹中。
2.创建别名:acme.sh=~/.acme.sh/acme.sh
.
3.创建每日 cron 作业来检查并更新证书(如果需要)。
安装完成后重启终端生效,使用acme.sh -v
获取到版本信息即安装成功
生成证书(手动模式)
使用acme.sh客户端来从Let’s Encrypt获取通配符证书的命令
acme.sh --issue
--dns
--yes-I-know-dns-manual-mode-enough-go-ahead-please
--domain *.goodthing.com
--server https://acme-v02.api.letsencrypt.org/directory
--dnssleep 20 --keylength 2048
acme.sh --issue
: 这是启动acme.sh脚本的命令,并告诉它执行“issue”操作,即获取证书。-dns
: 这表示acme.sh将使用DNS验证方式来证明你对域名的控制权。这意味着acme.sh将创建特定的DNS记录,然后Let’s Encrypt会检查这些记录是否存在以验证你的身份。-yes-I-know-dns-manual-mode-enough-go-ahead-please
: 这个长长的选项是确认你已经知道你正在使用DNS手动模式,并且理解如何手动配置DNS记录。在DNS手动模式下,acme.sh不会自动修改你的DNS记录,你需要手动添加所需的TXT记录。-domain *.goodthing.com
: 这指定你想要获取的证书的域名。在这里,你请求了一个通配符证书,这将匹配goodthing.com
下的所有子域名。-server https://acme-v02.api.letsencrypt.org/directory
: 这告诉acme.sh使用Let’s Encrypt的ACME v2 API。这是Let’s Encrypt当前的官方API端点。-dnssleep 20
: 这个选项设置acme.sh在DNS验证后等待的秒数。由于DNS记录的传播可能需要一些时间,这个选项允许acme.sh在检查记录之前等待20秒。-keylength 2048
: 这指定了你想要生成的证书的RSA密钥长度。2048位是目前推荐的密钥长度,提供了很好的安全性。
会生成TXT记录
需要添加对应的TXT记录进行DNS验证
每次使用 acme.sh
脚本获取证书时,它都会生成一个唯一的 TXT 记录值,用于 DNS 验证。这个值是随机生成的,以确保安全性,并且每次请求证书时都会有所不同。
使用 acme.sh
脚本来自动化续订 Let’s Encrypt 证书
acme.sh --renew
--dns
--yes-I-know-dns-manual-mode-enough-go-ahead-please
--domain *.goodthing.com
--server https://acme-v02.api.letsencrypt.org/directory
--dnssleep 20
--keylength 2048
acme.sh --renew --dns
:这个选项告诉acme.sh
脚本使用 DNS 验证方式来续订证书。-yes-I-know-dns-manual-mode-enough-go-ahead-please
:这个选项是告诉acme.sh
脚本继续执行,即使它提示您可能需要手动干预 DNS 验证过程。-domain *.goodthing.com
:这个选项指定了您想要续订的域名,这里是所有以goodthing.com
结尾的子域名。-server https://acme-v02.api.letsencrypt.org/directory
:这个选项指定了 Let’s Encrypt 的 ACME 服务器 URL。-dnssleep 20
:这个选项设置了 DNS 验证前等待的时间,以秒为单位。这里设置为 20 秒。-keylength 2048
:这个选项指定了您想要生成的私钥的长度,这里是 2048 位。
然后就会在相应的位置生成证书了