在 Lightsail 上配置泛域名 Let’s Encrypt SSL 证书

如果使用 Let’s Encrypt 的泛域名 SSL 证书,采用 DNS 方式验证,并且将域名解析托管在 Lightsail 的话,可以参考下列经验。

1
pip install certbot-dns-lightsail
  • 该插件需要先配置 AWS 区域和访问凭证。区域设置必须为 us-east-1
  • 在 AWS 处新建策略:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lightsail:CreateDomainEntry",
"lightsail:DeleteDomainEntry"
],
"Resource": "arn:aws:lightsail:us-east-1:${YOUR-ACCOUNT-ID}:Domain/${YOUR-DOMAIN-ID}"
}
]
}

账户 ID 可以在 Lightsail 账户页面查看,资源 ID 没有直接查看的方法,需要借助 awscli 工具:

1
aws lightsail get-domains --region us-east-1
  • 在 AWS 账户处创建访问凭证,并新建以下配置文件(注意运行权限,创建在对应用户家目录下):
1
2
3
4
5
6
7
8
# ~/.aws/config
[default]
region=us-east-1

# ~/.aws/credentials
[default]
aws_access_key_id=${YOUR-ACCESS-KEY-ID}
aws_secret_access_key=${YOUR-SECRET-ACCESS-KEY}
  • 然后就可以运行命令获取证书了:
1
2
3
4
5
6
7
8
certbot certonly \
--authenticator dns-lightsail \
--dns-lightsail-propagation-seconds 70 \
--non-interactive \
--agree-tos \
-m 'mail@example.com' \
-d 'example.com' \
-d '*.example.com'