如何使用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上的Let's Encrypt来保护HAProxy

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

2373
来自专栏信安之路

逻辑漏洞之密码重置

案例介绍: 问题出现在忘记密码处,可以通过手机找回和邮箱找回密码两种方式获得指定帐户的新密码设置权限

1430
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Let's Encrypt来保护Nginx

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

1060
来自专栏技术博文

ssh password and passphrase

ssh password and passphrase 1、ssh-keygen -t rsa     采用默认路径,输入passphrase。  2、scp ...

4196
来自专栏云计算教程系列

如何使用Debian 9上的Let加密保护Apache

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

1482
来自专栏阮一峰的网络日志

HTTPS 升级指南

上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。 为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS...

3415
来自专栏散尽浮华

Pupet自动化管理环境部署记录

废话不多说了,下面记录下Puppet在Centos下的部署过程: puppet是什么 puppet是一种基于ruby语言开发的Lnux、Unix、windows...

2246
来自专栏云计算教程系列

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

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

2720
来自专栏魏艾斯博客www.vpsss.net

Xshell 用 SSH 密钥登录服务器的配置过程

2.4K4
来自专栏电光石火

tengine+tomcat+php安装

在安装tengine之前,确认centos环境中有无gcc、pcre、openssl,如果没有按以下命令进行安装

2437

扫码关注云+社区

领取腾讯云代金券