前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用CentOS 7上的CloudFlare验证来检索让我们加密SSL通配符证书

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

原创
作者头像
彼岸轮回
修改2018-10-22 11:31:08
3.3K1
修改2018-10-22 11:31:08
举报
文章被收录于专栏:云计算教程系列

介绍

Let's Encrypt 是一个证书颁发机构(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验证,为您的域获取通配符证书。然后,您将配置证书以在其到期时续订。

先决条件

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

  • 一个CentOS 7服务器按照CentOS 7初始服务器设置指南设置,包括sudo非root用户和防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。在您的服务器上启用防火墙,如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。
  • 完全注册的域名。如果你没有域名,建议您先去这里注册一个域名
  • 一个的CloudFlare帐户。
  • 在Cloudflare的DNS中为您的域设置的DNS记录,以及配置的几个子域。您可以按照CloudFlare关于设置网站的教程进行配置。

第1步 - 安装Certbot

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

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

代码语言:javascript
复制
sudo yum install -y epel-release

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

代码语言:javascript
复制
sudo yum install -y certbot

然后为Certbot安装CloudFlare插件:

代码语言:javascript
复制
sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare

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

代码语言:javascript
复制
yum search python2-certbot-dns

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

第2步 - 获取CloudFlare API

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

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

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

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

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

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

第3步 - 配置Certbot

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

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

代码语言:javascript
复制
sudo certbot

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

代码语言:javascript
复制
sudo vi /etc/letsencrypt/cloudflareapi.cfg

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

代码语言:javascript
复制
dns_cloudflare_email = your_cloudflare_login
dns_cloudflare_api_key = your_cloudflare_api_key

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

代码语言:javascript
复制
sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

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

第4步 - 获取证书

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

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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
​
Plugins selected: Authenticator dns-cloudflare, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): your email

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

代码语言:javascript
复制
​
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

然后,您将被要求与电子前沿 基金会分享您的电子邮件地址:

代码语言:javascript
复制
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将获得您的证书。您将看到以下消息:

代码语言:javascript
复制
IMPORTANT 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命令查看包含密钥和证书的目录的内容:

代码语言:javascript
复制
sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

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

代码语言:javascript
复制
$ cat /etc/letsencrypt/live/your_domain/README

你会看到这样的输出:

代码语言:javascript
复制
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。

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

第5步 - 续订证书

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

让我们创建一个cron任务 ,每天运行续订检查。

使用以下命令打开要编辑的crontab文件:

代码语言:javascript
复制
sudo crontab -e

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

代码语言:javascript
复制
30 2 * * * certbot renew --noninteractive
  • 30 2 * * * 意思是“每天凌晨2:30运行以下命令”。
  • certbot renew命令将检查系统上安装的所有证书,并在不到30天内更新任何设置为过期的证书。
  • --noninteractive 告诉Certbot不要等待用户输入。

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

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

代码语言:javascript
复制
sudo vi /etc/letsencrypt/renewal/your_domain.conf

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

代码语言:javascript
复制
renew_hook = systemctl reload nginx

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

结论

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

更多CentOS教程请前往腾讯云+社区学习更多知识。


参考文献:《How to Retrieve Let's Encrypt SSL Wildcard Certificates using CloudFlare Validation on CentOS 7》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 先决条件
  • 第1步 - 安装Certbot
  • 第2步 - 获取CloudFlare API
  • 第3步 - 配置Certbot
  • 第4步 - 获取证书
  • 第5步 - 续订证书
  • 结论
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档