众所周知,在天朝家宽是封了80和443端口的。如果想申请到letsencrypt,通过普通方式是不可能的。还好letsencrypt可以支持DNS的方式申请到证书。下面就介绍如何通过cloudflare的DNS申请证书。这里以ubuntu为例子。
1.安装certbot
sudo apt update
sudo apt install certbot2. 安装cloudflare的插件
sudo apt install python3-pip
sudo pip3 install certbot-dns-cloudflare确认certbot-dns-cloudflare是否已经装上了,如果没有需要找到原因并装上(比如说acme版本低,可以通过python3 -m pip install --upgrade pip 升级pip,然后 pip install --upgrade acme, 再 pip install --upgrade certbot-dns-cloudflare)。确认的方法是,输入命令 sudo certbot plugins,会输出下面的结果
* dns-cloudflare Description: Obtain certificates using a DNS TXT record (if you are using Cloudflare for DNS). Interfaces: IAuthenticator, IPlugin Entry point: dns-cloudflare = certbot_dns_cloudflare.dns_cloudflare:Authenticator
3. 制作cloudflare的链接密匙
mkdir -p ~/.secrets/certbot
chmod 0700 ~/.secrets
cat > ~/.secrets/certbot/cloudflare.ini <<END
dns_cloudflare_email = admin@example.com
dns_cloudflare_api_key = 1c6287abdc254293f3b4837ad871937ajfb81
END
chmod 0400 ~/.secrets/certbot/cloudflare.inidns_cloudflare_email是你登录cloudflare的邮箱
dns_cloudflare_api_key是cloudflare的API密码。获取地址:https://dash.cloudflare.com/profile ,点击Global API Key的查看获取。
4. 获取证书sudo certbot certonly -d '*.example.com' \
--agree-tos \
--email admin@example.com \
--server https://acme-v02.api.letsencrypt.org/directory \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 305. 如何更新证书
sudo certbot renew或者强制更新
sudo certbot renew --force-renewal证书有效期3个月,如何通过计划任务自动更新,这里不详细介绍。
注意泛域名证书*.abc.com, 不能用于域名abc.com的证书,如果需要合并,需要下面的命令:
sudo certbot certonly \ -d '*.abc.com' \ -d 'abc.com' \ --agree-tos \ --email tianlichunhong@gmail.com \ --server https://acme-v02.api.letsencrypt.org/directory \ --dns-cloudflare \ --dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \ --dns-cloudflare-propagation-seconds 30

