如何使用CentOS 7上的CloudFlare验证来检索让我们加密SSL通配符证书

作者选择Code.org作为Write for DOnations计划的一部分进行捐赠。

介绍

我们的加密是一个证书颁发机构(CA),它为传输层安全性(TLS)加密提供免费证书。 它提供了一个名为Certbot的软件客户端,它简化了证书创建,验证,签名,安装和续订的过程。

我们的加密现在支持通配符证书 ,允许您使用单个证书保护域的所有子域。 如果要使用单个服务器托管多个服务(例如Web界面,API和其他站点),这将非常有用。

要从Let's Encrypt获取通配符证书,您必须使用Certbot的DNS插件之一 ,其中包括:

  • certbot-DNS-的CloudFlare
  • certbot-DNS-route53
  • certbot-DNS-谷歌
  • certbot-DNS-digitalocean

您选择的插件取决于您的DNS记录所在的服务。 在本教程中,您将使用CentOS 7上的Certbot进行CloudFlare验证,为您的域获取通配符证书。然后,您将配置证书以在其到期时续订。

先决条件

要完成本教程,您需要以下内容:

第1步 - 安装Certbot

默认情况下,CentOS的软件包管理器不提供certbot软件包。 您需要启用EPEL存储库以安装Certbot及其插件。

要添加CentOS 7 EPEL存储库,请运行以下命令:

sudo yum install -y epel-release

安装完成后,您可以安装certbot

sudo yum install -y certbot

然后为Certbot安装CloudFlare插件:

sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

如果您使用的是其他DNS服务,则可以使用yum search命令找到相应的插件:

yum search python2-certbot-dns

您已准备好服务器以获取证书。 现在您需要从CloudFlare获取API密钥。

第2步 - 获取CloudFlare API

为了使Certbot能够自动续订通配符证书,您需要为其提供CloudFlare登录和API密钥。

登录您的Cloudflare帐户并导航到“ 个人资料”页面

单击Global API Key行中的View按钮。

CloudFlare配置文件 -  API密钥

出于安全考虑,系统会要求您重新输入Cloudflare帐户密码。 输入它并验证CAPTCHA。 然后再次单击“ 查看”按钮。 你会看到你的API密钥:

CloudFlare配置文件 -  API密钥

复制此密钥。 您将在下一步中使用它。

现在返回到您的服务器以继续获取证书的过程。

第3步 - 配置Certbot

您拥有告诉Certbot如何使用Cloudflare的所有必要信息,但是让我们将其写入配置文件,以便Сertbot可以自动使用它。

首先运行不带任何参数的certbot命令来创建初始配置文件:

sudo certbot

接下来在/etc/letsencrypt目录中创建一个配置文件,其中包含您的CloudFlare电子邮件和API密钥:

sudo vi /etc/letsencrypt/cloudflareapi.cfg

将以下内容添加到其中,使用Cloudflare登录和API密钥替换占位符:

/etc/letsencrypt/cloudflareapi.cfg
dns_cloudflare_email = your_cloudflare_login
dns_cloudflare_api_key = your_cloudflare_api_key

保存文件并退出编辑器。
使用Cloudflare的API密钥,您可以从命令行执行与Cloudflare UI相同的操作,因此为了保护您的帐户,请使配置文件仅由其所有者读取,以便其他人无法获取您的密钥:

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

配置文件到位后,我们获取证书。

第4步 - 获取证书

要获得证书,我们将使用certbot命令并指定我们想要的插件,我们要使用的凭证文件以及我们应该用来处理请求的服务器。 默认情况下,Certbot使用Let's Encrypt的生产服务器,它使用ACME API版本1,但Certbot使用其他协议获取通配符证书,因此您需要提供ACME v2端点。

运行以下命令以获取域的通配符证书:

sudo certbot certonly --cert-name your_domain --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg --server https://acme-v02.api.letsencrypt.org/directory -d "*.your_domain" -d your_domain

系统将要求您指定应收到紧急续订和安全通知的电子邮件地址:

Output...
Plugins selected: Authenticator dns-cloudflare, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): your email

然后,您将被要求同意服务条款:

Output-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

然后,系统会要求您与电子前线分享您的电子邮件地址
基础:

Output-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N

然后Certbot将获得您的证书。 您将看到以下消息:

OutputIMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2018-07-31. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

现在你有了通配符证书。 我们来看看Certbot为您下载的内容。 使用ls命令查看包含密钥和证书的目录的内容:

sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

README文件包含有关这些文件的信息:

$ cat /etc/letsencrypt/live/your_domain/README

你会看到这样的输出:

自述
This directory contains your keys and certificates.

`privkey.pem`  : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem`     : will break many server configurations, and should not be used
                 without reading further documentation (see link below).

We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.

从这里,您可以使用通配符证书配置服务器。 您通常只需要以下两个文件: fullchain.pemprivkey.pem

例如,您可以配置多个基于Web的服务:

  • WWWW。 example.com
  • API。 example.com
  • 邮件。 example.com

为此,您需要一个Web服务器,例如Apache或Nginx。 这些服务器的安装和配置超出了本教程的范围,但以下指南将指导您完成配置服务器和应用证书的所有必要步骤。

对于Nginx,请看一下这些教程:

对于Apache,请参阅以下教程:

现在让我们看看自动续订证书。

第5步 - 续订证书

让我们加密发布有效期为90天的短期证书。 我们需要设置一个cron任务来检查即将到期的证书并自动更新它们。

让我们创建一个cron任务
这将每天进行续订检查。

使用以下命令打开crontab文件以进行编辑:

sudo crontab -e

将以下行添加到文件中以尝试每天续订证书:

crontab中
30 2 * * * certbot renew --noninteractive
  • 30 2 * * *表示“每天凌晨2:30运行以下命令”。
  • certbot renew命令将检查系统上安装的所有证书,并在不到30天的时间内更新任何设置为过期的证书。
  • --noninteractive告诉Certbot不要等待用户输入。

更新证书后,您需要重新加载Web服务器。 renew命令包括在renew证书之前或之后运行命令或脚本的挂钩。 您还可以在域的续订配置文件中配置这些挂钩。

例如,要重新加载Nginx服务器,请打开续订配置文件:

sudo vi /etc/letsencrypt/renewal/your_domain.conf

然后在[renewalparams]部分下添加以下行:

your_domain.conf'> / etc / letsencrypt / renewal / your_domain .conf
renew_hook = systemctl reload nginx

现在,Certbot将在安装更新的证书后自动重启您的Web服务器。

结论

在本教程中,您已安装了Certbot客户端,使用DNS验证获取了通配符证书并启用了自动续订。 这将允许您使用包含域的多个子域的单个证书并保护您的Web服务。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏