文章

使用 acme.sh 生成 Let’s Encrypt 泛域名证书

使用 acme.sh 生成 Let’s Encrypt 泛域名证书

系统环境:Debian 9 and Nginx。

1、安装

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

会自动安装到当前用户目录主目录下的 .acme.sh 目录下。

别人一般会再设置 alisa,我一般都直接进入其目录,这看个人喜好。

2、配置 DNS 环境变量

在获取证书前,需要先确认你的 DNS 解析商,以 DNSPod 为例,你需要先设置相关的环境变量:

1
2
export DP_Id="your-api-token-id"
export DP_Key="your-api-token"

至于对应参数的值如何获取,可登录:https://www.dnspod.cn/console/user/security , 增加专用 API token,以替换上述对应值。

更多 DNS 解析商的设置,请移步:这里

3、获取证书

进入执行目录:~/.acme.sh,执行:

1
./acme.sh --issue -d "erma.eu.org" -d "*.erma.eu.org" --server https://acme-v02.api.letsencrypt.org/directory --dns dns_dp

4、设置 Nginx 配置文件

先建立证书存放目录,比如:/path/to/your/keys/。

在你的 Nginx 配置文件对应的 server 中,增加:

1
2
3
4
5
6
7
8
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name you-domain-name.com;

ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate "/path/to/your/keys/erma.eu.org.crt";
ssl_certificate_key "/path/to/your/keys/erma.eu.org.key";

5、安装证书到预定证书存放目录

1
./acme.sh --installcert -d "erma.eu.org" -d "*.erma.eu.org" --key-file /path/to/your/keys/erma.eu.org.key --fullchain-file /path/to/your/keys/erma.eu.org.crt --reloadcmd "sudo service nginx force-reload"

一般情况下,“sudo service nginx force-reload”,会提示输入密码,如果是放在 crontab 执行的话,会造成重启 Nginx 失败,所以,有必要将 Nginx 命令放入 sudo 免密码执行中。

在 visudo 对应的用户,比如 www-data ,增加如下行:

1
www-data        ALL=(ALL) NOPASSWD: /usr/sbin/service nginx force-reload

6、收尾

设置自动升级:

1
./acme.sh --upgrade --auto-upgrade

设置周期更新证书:

1
./acme.sh --cron

在生成 Let’s Encrypt 泛域名证书的时候,acme.sh 比 certbot 好在什么地方,我不知道,我就知道 acme.sh 方便。

本文由作者按照 CC BY 4.0 进行授权