Let's Encrypt 是一个证书颁发机构(CA),它为传输层安全性(TLS)加密提供免费证书。它提供了一个名为Certbot的软件客户端,它简化了证书创建,验证,签名,安装和续订的过程。
我们的加密现在支持通配符证书,允许您使用单个证书保护域的所有子域。如果要使用单个服务器托管多个服务(例如Web界面,API和其他站点),这将非常有用。
要从Let's Encrypt获取通配符证书,您必须使用Certbot的DNS插件之一,其中包括:
您选择的插件取决于您的DNS记录所在的服务。在本教程中,您将使用CentOS 7上的Certbot 进行CloudFlare验证,为您的域获取通配符证书。然后,您将配置证书以在其到期时续订。
要完成本教程,您需要以下内容:
默认情况下,该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密钥。
为了使Certbot能够自动续订通配符证书,您需要为其提供CloudFlare登录和API密钥。
登录您的Cloudflare帐户并导航到“ 个人资料”页面。
单击Global API Key行中的View按钮。
出于安全考虑,系统会要求您重新输入Cloudflare帐户密码。输入它并验证CAPTCHA。然后再次单击“ 查看”按钮。你会看到你的API密钥:
复制此密钥。您将在下一步中使用它。
现在返回到您的服务器以继续获取证书的过程。
您拥有告诉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
配置文件到位后,我们获取证书。
要获取证书,我们将使用该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
然后,您将被要求与电子前沿 基金会分享您的电子邮件地址:
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将获得您的证书。您将看到以下消息:
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.pem
和privkey.pem
。
例如,您可以配置多个基于Web的服务:
为此,您需要一个Web服务器,例如Apache或Nginx。
现在让我们看看自动续订证书。
让我们加密发布有效期为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服务。
更多CentOS教程请前往腾讯云+社区学习更多知识。
参考文献:《How to Retrieve Let's Encrypt SSL Wildcard Certificates using CloudFlare Validation on CentOS 7》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。