2020年12月20日星期日

使用certbot实现cloudflare的DNS方式申请证书

 众所周知,在天朝家宽是封了80和443端口的。如果想申请到letsencrypt,通过普通方式是不可能的。还好letsencrypt可以支持DNS的方式申请到证书。下面就介绍如何通过cloudflare的DNS申请证书。这里以ubuntu为例子。

1.安装certbot

sudo apt update
sudo apt install certbot

2. 安装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.ini

dns_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 30

5. 如何更新证书

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

没有评论:

发表评论

安装 PaddleOCR的方法

  安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html 命令:  python -m pip...