导航到"API令牌"部分[1]并点击"创建令牌"[2]。
点击“编辑区域DNS”部分中的“使用模板”。
从“权限”部分,通过从下拉菜单中选择标记的选项,允许“编辑”权限到“dns区域”。
如果您正在使用CloudFlare管理多个域,则可以允许从“区域资源”部分修改“特定区域”。允许API令牌仅修改单个区域比允许API令牌修改所有区域更安全。这是因为如果API令牌被破坏,攻击面将更小,造成的损害也更小。
如果您想要使用一个API密钥来修改您的所有CloudFlare管理域,请从“区域资源”部分选择“所有区域”。
完成API令牌的配置后,点击“继续进行摘要”。
将显示您可以使用API令牌在CloudFlare管理的域上执行的操作的摘要。点击“创建令牌”。
应创建API令牌。将API令牌复制到安全的地方,这样就不会丢失它。一旦您离开此页面,您将无法再次找到此API令牌。您需要生成一个新的API令牌,以防丢失:
LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5
在计算机/服务器上安全存储CloudFlare API令牌
Certbot需要使用CloudFlare API令牌在CloudFlare DNS服务器中为您的域添加新的txt记录。因此,您必须将CloudFlare API令牌存储在您的计算机/服务器上。存储API令牌而不确保适当的文件访问权限可能允许其他程序/用户访问API令牌。出于安全考虑,这不是你想要的。在本节中,我们将向您展示如何在文件系统上安全地存储CloudFlare API令牌。
首先,创建一个目录(即~/. secrets/certbot),您希望在其中存储CloudFlare API密钥,如下所示:
$mkdir—pv~/. secrets/certbot
在新创建的目录(即~/.secrets/certbot)中创建一个Cloudflare.ini文件,并使用您喜欢的文本编辑器(即Nano)打开它,如下所示:
$nano/. secrets/certbot/cloudflare.ini
在“cloudflare.ini”文件中键入以下行,然后按+X,后跟“Y”并保存它(如果您使用的是Nano文本编辑器)。
Dns_CloudFlare_API_TOKEN=
为确保"cloudflare.ini"文件具有正确的访问权限,请运行以下命令,以确保只有root用户具有对文件的读写权限:
$sudo chown root:root certbot/.secrets/certbot/cloudflare.ini
$sudo chmod 0600邮箱/. secrets/certbot/cloudflare.ini
正如您所看到的,只有root用户拥有对"cloudflare.ini"文件的读写权限。
$ls—lh/.secrets/certbot/cloudflare.ini
试图读取"cloudflare.ini"文件的其他用户将收到"Permission denied"错误消息。
$cat/. secrets/certbot/cloudflare.ini
使用Certbot CloudFlare DNS验证生成SSL证书
若要使用CloudFlare DNS验证为邮箱域名"*. nodekite.com"生成Let's Encrypt SSL证书,请按如下方式运行cerbot命令:
$sudo certbot certonly——dns—cloudflare——dns—cloudflare—credendence/certbot/cloudflare.ini—d *. www.example.com
要使用CloudFlare DNS验证为域名"nodekite.com"和"www.nodekite.com"生成Let's Encrypt SSL证书,请为每个域名使用certbot命令的"—d"选项,如下所示:
$sudo certbot certonly——dns—cloudflare——dns—cloudflare—credendence/. secrets/certbot/cloudflare.ini—d www.example.com—d nodekite.com
如果DNS更改需要很长时间才能传播到全球流行的域名服务器,您可以使用Certbot的“-dns-CloudFlare-Proportation-Second”选项来设置您希望Certbot在执行DNS验证之前等待的秒数。
$sudo certbot certonly——dns—cloudflare——dns—cloudflare—credendence/. secrets/certbot/cloudflare. ini—dns—cloudflare—propagation—seconds 60—d *. www.example.com
运行Certbot命令后,系统会要求您输入电子邮件地址。输入您的电子邮件地址,然后按继续。
按“Y”,然后按接受“我们加密”的“服务条款”。
按“Y”,然后按。
A我们来加密正在颁发的SSL证书。这需要一段时间才能完成。
在这一点上,发布了Let's Encrypt SSL证书。应显示保存SSL证书文件的完整路径。还应显示SSL证书的过期日期。
使用Certbot加密SSL证书
您可以使用以下命令列出使用Certbot生成的所有Let's Crypt SSL证书:
$sudo certbot证书
如您所见,列出了为"nodekite.com"域名生成的Let's Encrypt SSL证书[1]。为"nodekite.com"[2]域名颁发了一个SSL证书。证书的有效期为2024—03—20(有效期为89天)[3]。证书和私钥路径也在这里列出[4]。
Certbot将您为您的域生成的所有SSL证书存储在它们各自文件夹中的“/etc/letsENCRYPT/live”目录中。
$sudo ls—Rlh/etc/letsencrypt/live/
使用Certbot续订We‘s Encrypt SSL证书
Certbot会自动更新您使用CloudFlare DNS验证生成的所有Let's Encrypt SSL证书。
若要测试Let's Encrypt SSL证书的自动续订功能是否有效,请运行以下命令:
$sudo certbot renewed——试运行
将为您生成的每个Let's Encrypt SSL证书模拟自动续订操作。
如果测试成功了,我们将祝贺你。成功的测试意味着SSL证书将在过期前自动更新。你不用做别的了。
为了使Certbot自动续订功能正常工作,必须在您的计算机/服务器上启用并激活"cerbot. timer"systemd计时器。
您可以使用以下命令检查"cerbot. timer"systemd计时器是否已启用并且处于活动状态:
$sudo systemctl状态certbot. timer
正如你所看到的,"certbot. timer"systemd计时器是启用的(在引导时自动启动)[1]和活动的[2]。Certbot会在11分钟后检查是否需要更新任何SSL证书(根据下面的截图),并更新即将过期的SSL证书[3]。
若要手动检查是否有任何SSL证书即将过期并续订即将过期的SSL证书,请运行以下命令:
$sudo certbot release
在我们的例子中,没有SSL证书即将到期。因此,Certbot没有尝试更新任何SSL证书。
若要强制Certbot续订特定域的SSL证书(假设为*. www.example.com),请运行以下命令:
$sudo certbot certonly——force—renewed—d *. www.example.com
按"1"并按选择第一个选项(用于使用CloudFlare DNS验证)。
SSL证书应该更新。
结论
若要使用Certbot使用CloudFlare DNS验证获取Let's Encrypt SSL证书,您需要访问CloudFlare API令牌。在本文中,我们向您展示了如何为您的域创建CloudFlare API令牌,并将其安全地存储在您的计算机/服务器上,以便您可以在需要时使用Certbot访问它。我们还向您展示了如何在最流行的Linux发行版上安装Certbot和Certbot CloudFlare DNS插件。我们向您展示了如何使用Certbot和CloudFlare DNS验证为单个域生成Let's Encrypt SSL证书以及SSL证书。最后,我们向您展示了如何使用Certbot自动和手动更新Let's Encrypt SSL证书。
参考资料:
- 挑战类型—让我们加密
- 欢迎使用certbot—dns—cloudflare的文档!- certbot—dns—cloudflare 0文档