如何使用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存储库,请运行以下命令:
1 2 |
sudo yum install -y epel-release |
安装完成后,您可以安装certbot
:
1 2 |
sudo yum install -y certbot |
然后为Certbot安装CloudFlare插件:
1 2 |
sudo yum install -y python2-cloudflare python2-certbot-dns-cloudflare |
如果您正在使用其他DNS服务,则可以使用以下yum search
命令找到相应的插件:
1 2 |
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
命令来创建初始配置文件:
1 2 |
sudo certbot |
接下来在/etc/letsencrypt
目录中创建一个包含CloudFlare电子邮件和API密钥的配置文件:
1 2 |
sudo vi /etc/letsencrypt/cloudflareapi.cfg |
将以下内容添加到其中,使用Cloudflare登录和API密钥替换占位符:
1 2 3 |
dns_cloudflare_email = your_cloudflare_login dns_cloudflare_api_key = your_cloudflare_api_key |
保存文件并退出编辑器。 使用Cloudflare的API密钥,您可以从命令行执行与Cloudflare UI相同的操作,因此为了保护您的帐户,请使配置文件仅由其所有者读取,以便其他人无法获取您的密钥:
1 2 |
sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg |
配置文件到位后,我们获取证书。
第4步 – 获取证书
要获取证书,我们将使用该certbot
命令并指定我们想要的插件,我们要使用的凭证文件以及我们应该用来处理请求的服务器。默认情况下,Certbot使用Let’s Encrypt的生产服务器,它使用ACME API版本1,但Certbot使用其他协议获取通配符证书,因此您需要提供ACME v2端点。
运行以下命令以获取域的通配符证书:
1 2 |
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 |
系统将要求您指定应收到紧急续订和安全通知的电子邮件地址:
1 2 3 4 5 |
Plugins selected: Authenticator dns-cloudflare, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): your email |
然后,您将被要求同意服务条款:
1 2 3 4 5 6 7 8 |
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 |
然后,您将被要求与电子前沿 基金会分享您的电子邮件地址:
1 2 3 4 5 6 7 8 |
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将获得您的证书。您将看到以下消息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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
命令查看包含密钥和证书的目录的内容:
1 2 3 |
sudo ls /etc/letsencrypt/live/your_domain Outputcert.pem chain.pem fullchain.pem privkey.pem README |
该README
文件包含有关这些文件的信息:
1 2 |
$ cat /etc/letsencrypt/live/your_domain/README |
你会看到这样的输出:
1 2 3 4 5 6 7 8 9 10 11 |
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.pem
和privkey.pem
。
例如,您可以配置多个基于Web的服务:
- WWWW。example.com
- API。example.com
- 邮件。example.com
为此,您需要一个Web服务器,例如Apache或Nginx。这些服务器的安装和配置超出了本教程的范围,但以下指南将指导您完成配置服务器和应用证书的所有必要步骤。
对于Nginx,请看一下这些教程:
对于Apache,请参阅以下教程:
- 如何在CentOS 7上安装Apache Tomcat8
- 如何在CentOS 7上通过Yum安装Apache Tomcat 7
- 如何在CentOS 7上通过Let’s Encrypt 来加密Apache
现在让我们看看自动续订证书。
第5步 – 续订证书
让我们加密发布有效期为90天的短期证书。我们需要设置一个cron任务来检查即将到期的证书并自动更新它们。
让我们创建一个cron任务 ,每天运行续订检查。
使用以下命令打开要编辑的crontab
文件:
1 2 |
sudo crontab -e |
将以下行添加到文件中以尝试每天续订证书:
1 2 |
30 2 * * * certbot renew --noninteractive |
30 2 * * *
意思是“每天凌晨2:30运行以下命令”。- 该
certbot renew
命令将检查系统上安装的所有证书,并在不到30天内更新任何设置为过期的证书。 --noninteractive
告诉Certbot不要等待用户输入。
更新证书后,您需要重新加载Web服务器。该renew
命令包括在续订证书之前或之后运行命令或脚本的挂钩。您还可以在域的续订配置文件中配置这些挂钩。
例如,要重新加载Nginx服务器,请打开续订配置文件:
1 2 |
sudo vi /etc/letsencrypt/renewal/your_domain.conf |
然后在以下[renewalparams]
部分添加以下行:
1 2 |
renew_hook = systemctl reload nginx |
现在,Certbot将在安装更新的证书后自动重启您的Web服务器。
结论
在本教程中,您已安装了Certbot客户端,使用DNS验证获取了通配符证书并启用了自动续订。这将允许您使用包含域的多个子域的单个证书并保护您的Web服务。
近期评论