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

pip install certbot-dns-lightsail
  • 该插件需要先配置 AWS 区域和访问凭证。区域设置必须为 us-east-1
  • 在 AWS 处新建策略:
{
    "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工具:

aws lightsail get-domains --region us-east-1
  • 在 AWS 账户处创建访问凭证,并新建以下配置文件(注意运行权限,创建在对应用户家目录下):
# ~/.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}
  • 然后就可以运行命令获取证书了:
certbot certonly \
  --authenticator dns-lightsail \
  --dns-lightsail-propagation-seconds 70 \
  --non-interactive \
  --agree-tos \
  -m 'mail@example.com' \
  -d 'example.com' \
  -d '*.example.com'