介绍
本教程将告诉您如何设置从TLS / SSL证书让我们的加密运行Apache作为web服务器的一个Ubuntu 14.04服务器上。 我们还将介绍如何使用cron作业自动执行证书续订过程。
Web服务器中使用SSL证书加密服务器和客户端之间的流量,为访问应用程序的用户提供额外的安全性。 Let's Encrypt提供了一种免费获取和安装受信任证书的简单方法。
先决条件
为了完成本指南,您需要:
当您准备好继续时,使用您的sudo帐户登录您的服务器。
第1步 - 安装让我们加密客户端
首先,我们将从官方知识库下载Let's Encrypt客户端。 虽然咱们加密项目已更名为他们的客户certbot
,包括在Ubuntu 16.04版本库被简单地称为客户端letsencrypt
。 这个版本完全适合我们的目的。
更新服务器的本地apt
包装指标,并通过键入安装客户端:
sudo apt-get update
sudo apt-get install python-letsencrypt-apache
该letsencrypt
客户现在应该可以使用了。
第2步 - 设置SSL证书
使用Let's Encrypt客户端为Apache生成SSL证书非常简单。 客户端将自动获取并安装对作为参数提供的域有效的新SSL证书。
要执行交互式安装,并获得只覆盖单个域的证书,运行letsencrypt
命令,像这样,其中example.com是您的域:
sudo letsencrypt --apache -d example.com
如果要安装对多个域或子域有效的单个证书,则可以将它们作为附加参数传递给命令。 在参数列表中的第一个域名将用于让我们加密创建证书的基本域,因为这个原因,我们建议您在列表中第一个通过裸顶级域名,跟任何其它子域或别名:
sudo letsencrypt --apache -d example.com -d www.example.com
对于这个例子,在基本域将example.com
。
安装依赖关系后,您将看到有关自定义证书选项的分步指南。 你会被要求提供一个电子邮件地址丢失了密钥恢复和通知,并且您将能够使两者之间选择http
和https
访问或迫使所有请求重定向到https
。 它通常是最安全的需要https
,除非你有未加密的特定需要http
流量。
当安装完成后,你应该能够找到生成的证书文件/etc/letsencrypt/live
。 您可以验证与以下链接您的SSL证书的状态(不要忘了你的基地域名替换example.com):
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
你现在应该可以使用访问您的网站https
前缀。
第3步 - 设置自动续订
让我们加密证书有效期为90天,但建议您每60天更新证书以允许有误差。 该让我们的加密客户端有一个renew
命令,可自动检测当前安装的证书,并试图续约他们,如果他们从到期日不到30天了。
要为所有已安装的域触发更新过程,您应该运行:
sudo letsencrypt renew
因为我们最近安装了证书,所以命令将只检查到期日期,并打印一条消息通知证书不是由于更新。 输出应该类似于:
Processing /etc/letsencrypt/renewal/example.com.conf
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.
请注意,如果您创建了具有多个域的捆绑证书,则只有基本域名将显示在输出中,但续订应对此证书中包含的所有域有效。
确保您的证书不会过时的一个实用方法是创建一个定期执行自动更新命令的cron作业。 由于更新首先检查到期日期,并且仅当证书距离到期少于30天时才执行更新,因此可以安全地创建每周或甚至每天运行的cron作业。
让我们编辑crontab来创建一个新作业,它将每周运行续订命令。 要为root用户编辑crontab,请运行:
sudo crontab -e
系统可能会提示您选择编辑器:
Outputno crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]:
除非你更舒适ed
或vim
,按Enter使用nano
,默认。
在crontab的结尾处包含以下内容,全部在一行中:
crontab
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
保存并退出。 这将创建一个新的cron作业将执行letsencrypt-auto renew
凌晨2:30命令每星期一。 由命令生成的输出将通过管道输送到位于日志文件/var/log/le-renewal.log
。
有关如何创建和调度cron作业的更多信息,你可以检查我们如何使用cron来自动执行任务的VPS引导。
结论
在本指南中,我们看到了如何从Let's Encrypt安装一个免费的SSL证书,以保护由Apache托管的网站。 我们建议您检查的官方咱们博客加密重要更新,不时。