专栏首页云计算教程系列如何使用CentOS 7上的CloudFlare验证来检索让我们加密SSL通配符证书
原创

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

介绍

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服务器,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。包括具有sudo权限的非root用户和防火墙。如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。
  • 完全注册的域名。如果你没有域名,建议您先去这里注册一个域名,您需要将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。如果你有域名,保护你网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。腾讯云SSL证书安装操作指南进行设置。
  • 一个的CloudFlare帐户。
  • 在Cloudflare的DNS中为您的域设置的DNS记录,以及配置的几个子域。

第1步 - 安装Certbot

默认情况下,该certbot软件包不能通过CentOS的软件包管理器获得。您需要启用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帐户密码。输入它并验证CAPTCHA。然后再次单击“ 查看”按钮。你会看到你的API密钥:

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

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

第3步 - 配置Certbot

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

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

sudo certbot

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

sudo vi /etc/letsencrypt/cloudflareapi.cfg

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

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

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

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

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

​
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

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

​
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将获得您的证书。您将看到以下消息:

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命令查看包含密钥和证书的目录的内容:

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

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

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

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

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

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

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

renew_hook = systemctl reload nginx

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

结论

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

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


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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    Let's Encrypt 是一个证书颁发机构(CA),它为传输层安全性(TLS)加密提供免费证书。它提供了一个名为Certbot的软件客户端,它简化了证书创建...

    彼岸轮回
  • 如何使用Certbot独立模式检索我们在Ubuntu 18.04上加密SSL证书

    Let's Encrypt是一种通过自动API提供免费SSL证书的服务。最受欢迎的Let's Encrypt客户端是EFF的Certbot。

    丰一川
  • 如何使用CentOS 7上的Let's Encrypt来保护HAProxy

    我们的加密是一个新的证书颁发机构(CA),它提供了一种获取和安装免费TLS / SSL证书的简便方法,从而在Web服务器上启用加密的HTTPS。它通过提供软件客...

    尘埃
  • nginx下配置高性能,高安全性的https TLS服务

    并附送一个优化出来的openssl编译脚本,可以编译出一个高性能,高安全性的openssl库,您可以直接复制粘贴使用。

    byronhe
  • 使用cloudflare加持你的网站

    简单地说,CloudFlare就是通过基于反向代理的内容分发网络(Content Delivery Network,CDN)及分布式域名解析服务(Distrib...

    lestat
  • 免费ssl证书申请:给你的网站添加免费的https加密

    神无月
  • 如何使用CentOS 7上的Let's Encrypt来保护Apache

    本教程将向您展示如何在运行Apache作为Web服务器的CentOS 7服务器上设置来自Let's Encrypt的TLS / SSL证书。此外,我们将介绍如何...

    独钓寒江雪_Ly
  • 使用Go和Let's Encrypt证书部署HTTPS

    为什么要使用HTTPS?使用HTTPS的途径有哪些?如何用Go来部署HTTPS?拿出你的小本本,你要的干货都在这儿! HTTPS 的好处我们已在之前的文章中提高...

    FB客服
  • 使用腾讯云对象存储最低成本搭建静态网站

    域名,很简单,在腾讯云直接注册即可:https://cloud.tencent.com/act/cps/redirect?redirect=10025&cps_...

    Ar-Sr-Na
  • Cloudflare免费ssl证书设置

    cloudflare是一家国外的 CDN 加速服务商,还是很有名气的。提供免费和付费的加速和网站保护服务。cloudflare提供了不同类型的套餐,即使是免费用...

    爱游博客
  • cloudflare 默认证书导致 Let’s Encrypt 证书失效及网站打不开的解决办法

    魏艾斯博客www.vpsss.net
  • 运用CDN技术的网站验证以及相关风险

    方法一: 描述: 使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN,多地 Ping 网站有:

    WeiyiGeek
  • 使用对象存储最低成本搭建静态网站

    域名,很简单,在腾讯云直接注册即可:https://cloud.tencent.com/act/cps/redirect?redirect=10025&cps_...

    Ar-Sr-Na
  • 如何在CentOS 7上使用Topbeat和ELK收集基础架构度量标准介绍

    Topbeat是帮助将各种类型的服务器数据发送到Elasticsearch实例的几个“Beats”数据发送器之一,它允许您收集有关服务器上的CPU,内存和进程活...

    司徒永哥
  • 使用acme.sh申请Let's Encrypt免费的SSL证书

    acme.sh 实现了 acme 协议,可以从letsencrypt生成免费的证书。接下来将为大家介绍怎样申请Let's Encrypt通配符证书。

    青阳
  • 如何在CentOS 7上安装Elasticsearch,Logstash和Kibana

    在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 2.2.x,Logstash 2.2...

    物花无语
  • WORDPRESS网站如何申请SSL证书并实现全站HTTPS

    最近在一些Wordpress兴趣群里,发现很多WP爱好者的博客并没有申请SSL证书实现全站HTTPS化。显然,作为一名站长/博主,这是不应该的。所以本人就分享下...

    梦想家路飞
  • 用全站 CDN 部署 Discourse 论坛

    Discourse 是一款由 Stack Overflow 的联合创始人——Jeff Atwood,基于 Ruby on Rails 开发的开源论坛。相较于传统...

    NebulaGraph
  • 慎用免费HTTPS:看似美好的免费“通用SSL证书”

    上个月月底,CloudFlare宣布向所有客户提供免费的SSL支持。一时间,全世界的云计算供应商以及开发者大为欣喜,首先作为一个网站管理员,他可以在更小的成本下...

    FB客服

扫码关注云+社区

领取腾讯云代金券